麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > C > 正文

基于大端法、小端法以及網絡字節序的深入理解

2020-01-26 16:06:28
字體:
來源:轉載
供稿:網友
關于字節序(大端法、小端法)的定義
《UNXI網絡編程》定義:術語“小端”和“大端”表示多字節值的哪一端(小端或大端)存儲在該值的起始地址。小端存在起始地址,即是小端字節序;大端存在起始地址,即是大端字節序。

也可以說:
1.小端法(Little-Endian)就是低位字節排放在內存的低地址端即該值的起始地址,高位字節排放在內存的高地址端。
2.大端法(Big-Endian)就是高位字節排放在內存的低地址端即該值的起始地址,低位字節排放在內存的高地址端。
舉個簡單的例子,對于整形0x12345678。它在大端法和小端法的系統內中,分別如圖1所示的方式存放。

zijiexu_pic_1 

網絡字節序

我們知道網絡上的數據流是字節流,對于一個多字節數值,在進行網絡傳輸的時候,先傳遞哪個字節?也就是說,當接收端收到第一個字節的時候,它是將這個字節作為高位還是低位來處理呢?
網絡字節序定義:收到的第一個字節被當作高位看待,這就要求發送端發送的第一個字節應當是高位。而在發送端發送數據時,發送的第一個字節是該數字在內存中起始地址對應的字節。可見多字節數值在發送前,在內存中數值應該以大端法存放。
網絡字節序說是大端字節序。
比如我們經過網絡發送0x12345678這個整形,在80X86平臺中,它是以小端法存放的,在發送前需要使用系統提供的htonl將其轉換成大端法存放,如圖2所示。

zijiexu_pic_2

字節序測試程序

不同cpu平臺上字節序通常也不一樣,下面寫個簡單的C程序,它可以測試不同平臺上的字節序。

復制代碼 代碼如下:

   #include <stdio.h>
   #include <netinet/in.h>
   int main()
   {
       int i_num = 0x12345678;
       printf("[0]:0x%x/n", *((char *)&i_num + 0));
       printf("[1]:0x%x/n", *((char *)&i_num + 1));
       printf("[2]:0x%x/n", *((char *)&i_num + 2));
       printf("[3]:0x%x/n", *((char *)&i_num + 3));

       i_num = htonl(i_num);
       printf("[0]:0x%x/n", *((char *)&i_num + 0));
       printf("[1]:0x%x/n", *((char *)&i_num + 1));
       printf("[2]:0x%x/n", *((char *)&i_num + 2));
       printf("[3]:0x%x/n", *((char *)&i_num + 3));

       return 0;
   }

在80X86CPU平臺上,執行該程序得到如下結果:
[0]:0x78
[1]:0x56
[2]:0x34
[3]:0x12

[0]:0x12
[1]:0x34
[2]:0x56
[3]:0x78

分析結果,在80X86平臺上,系統將多字節中的低位存儲在變量起始地址,使用小端法。htonl將i_num轉換成網絡字節序,可見網絡字節序是大端法。

總結點:80X86使用小端法,網絡字節序使用大端法。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 欧美18—19sex性hd按摩 | 国产无限资源在线观看 | 日本在线播放一区二区三区 | 一级毛片在线观看视频 | 极品美女一级毛片 | 一区二区久久久久草草 | 黄色试看视频 | 国产系列 视频二区 | 国产精品久久国产精品 | 国内精品久久久久久久久久 | 日韩 综合 | 久久精品美乳 | 免费国产网站 | 国产成人在线一区 | 关键词| 精品亚洲国产视频 | 久久精品视频首页 | 免费一级特黄毛片 | 久久精品片 | 精品国产96亚洲一区二区三区 | 免费观看黄色影片 | 免费视频一区 | 49vvv| 日日草视频 | hd欧美free性xxxx护土 | 欧美国产永久免费看片 | 中国美女一级黄色大片 | h视频在线观看免费 | 久久精精品 | 欧洲色阁中文字幕 | 国产一区二区在线观看视频 | 国产一区二区视频在线播放 | 凹凸成人精品亚洲精品密奴 | 亚洲综人网 | 91精品国产777在线观看 | 国产精品视频导航 | 国产精品久久999 | 夜夜夜精品视频 | 欧美精品一区二区三区在线播放 | 国产精品伦视频看免费三 | 日韩黄色片免费看 |