日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

字节序:Big Endian 和 Little Endian

發布時間:2024/1/1 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 字节序:Big Endian 和 Little Endian 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近碰到了node.js中的buf.readUInt16LE(offset[, noAssert])方法:
? ? ? ? 根據指定的偏移量,使用特殊的 endian 字節序格式讀取一個無符號 16 位整數。若參數 noAssert 為 true 將不會驗證 offset 偏移量參數。 這意味著 offset 可能會超出 buffer 的末尾。默認是 false。

? ? ? ? ? ?搜了下字節序這個概念:

轉自:https://blog.csdn.net/lisonglisonglisong/article/details/45421091

?

一、字節序


字節序,也就是字節的順序,指的是多字節的數據在內存中的存放順序。

在幾乎所有的機器上,多字節對象都被存儲為連續的字節序列。例如:如果C/C++中的一個int型變量 a 的起始地址是&a = 0x100,那么 a 的四個字節將被存儲在存儲器的0x100, 0x101, 0x102, 0x103位置。

根據整數 a 在連續的 4 byte 內存中的存儲順序,字節序被分為大端序(Big Endian) 與 小端序(Little Endian)兩類。 然后就牽涉出兩大CPU派系:

Motorola 6800,PowerPC 970,SPARC(除V9外)等處理器采用 Big Endian方式存儲數據;

x86系列,VAX,PDP-11等處理器采用Little Endian方式存儲數據。

另外,還有一些處理器像ARM, DEC Alpha的字節序是可配置的。

?

二、大端與小端


那么,到底什么是大端,什么是小端? 如下圖:

? ? ? ? ? ? ? ?
?
我相信上面的圖已經夠直觀了。也就是說:

Big Endian 是指地址端 存放 高位字節
Little Endian 是指地址端 存放 低位字節
各自的優勢:

Big Endian:符號位的判定固定為第一個字節,容易判斷正負
Little Endian:長度為1,2,4字節的數,排列方式都是一樣的,數據類型轉換非常方便


三、為什么要注意字節序


如果你寫的程序只在單機環境下面運行,并且不和別人的程序打交道,那么你完全可以忽略字節序的存在。

但是,如果你的程序要跟別人的程序產生交互呢? 比如,當一個 C/C++ 的程序要與一個 Java 程序交互時:

C/C++語言編寫的程序里數據存儲順序是跟編譯平臺所在的CPU相關的,而現在比較普遍的 x86 處理器是 Little Endian

JAVA編寫的程序則唯一采用 Big Endian 方式來存儲數據

試想,如果你的C/C++程序將變量 a = 0x12345678 的首地址傳遞給了Java程序,由于Java采取 Big Endian 方式存儲數據,很自然的它會將你的數據翻譯為 0x78563412。顯然,問題就出現了!!!

另外,網絡傳輸一般采用 Big Endian,也被稱之為網絡字節序,或網絡序。當兩臺采用不同字節序的主機通信時,在發送數據之前都必須經過字節序的轉換成為網絡字節序后再進行傳輸。

四、判斷機器的字節序
由于 C/C++ 存儲數據時的字節序依賴所在平臺的CPU,所以我們可以通過C/C++程序判定機器的端序:

void Endianness() {int a = 0x12345678;if( *((char*)&a) == 0x12)cout << "Big Endian" << endl;elsecout << "Little Endian" << endl; }


五、網絡序和主機序


網絡字節序:TCP/IP各層協議將字節序定義為 Big Endian,因此TCP/IP協議中使用的字節序是大端序。

主機字節序:整數在內存中存儲的順序,現在 Little Endian 比較普遍。(不同的 CPU 有不同的字節序)

在進行網絡通信時 通常需要調用相應的函數進行主機序和網絡序的轉換。Berkeley socket API 定義了一組轉換函數,用于16和32bit整數在網絡序和本機字節序之間的轉換。htonl,htons用于本機序轉換到網絡序;ntohl,ntohs用于網絡序轉換到本機序。
---------------------?
?

總結

以上是生活随笔為你收集整理的字节序:Big Endian 和 Little Endian的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲天堂一区二区在线观看 | 大尺度做爰啪啪床戏 | 久久亚洲精品国产精品黑人v | 日本男女网站 | 天天干中文字幕 | 免费成人蒂法网站 | 日本免费一级片 | 日韩伦理在线视频 | 亚洲精品亚洲人成人网 | 亚洲成人av一区二区三区 | 国产99久久久国产精品成人免费 | 国产精欧美一区二区三区白种人 | 最新av电影网站 | 亚洲毛片一区二区三区 | 艳母动漫在线播放 | 亚洲一区二区视频网站 | 久久精品97 | 久久久久无码精品国产 | 久章草影院| 青青草狠狠干 | 欧美黑人一级 | 91射区| 窝窝午夜视频 | 日本人の夫妇交换 | 日日弄天天弄美女bbbb | 女儿的朋友5中汉字晋通话 欧美成人免费高清视频 | 午夜两性 | 欧美12--15处交性娇小 | 青草视频免费观看 | 精品人妻中文无码av在线 | 精品人妻在线播放 | 成年人午夜网站 | 日韩第二页 | 黑丝美女av | 色婷婷色 | 捆绑无遮挡打光屁股 | 日韩精品――中文字幕 | 中国久久久| 视频在线一区 | 乌克兰av在线 | 日本福利在线 | av男人天堂网 | 一级片黑人 | 国产热 | 欧美日韩亚洲在线观看 | 怡红院一区二区三区 | 国产污网站 | 成人精品一区二区三区四区 | 黄色网免费看 | 一区二区三区四区亚洲 | 成人性生活视频 | 人妻无码一区二区三区四区 | 亚洲天堂午夜 | 久久另类ts人妖一区二区 | 女人18毛片一区二区三区 | 超碰视屏 | 久久精品成人一区二区三区蜜臀 | 91在线不卡 | 亚洲欲| 干夜夜| 好男人www在线视频 我们的2018在线观看免费高清 | 亚洲色图制服诱惑 | 超污巨黄的小短文 | 黄色avav | 日韩免费一二三区 | 欧美人妖乱大交 | 亚洲一区二区三区高清在线 | 性生交大片免费看女人按摩 | 欧美黄色影院 | 91免费视频黄 | jlzzjlzz亚洲日本少妇 | 欧美大片www | 欧洲视频一区二区 | 精品视频在线免费看 | 免费观看成人鲁鲁鲁鲁鲁视频 | 久久国产精品久久久久久电车 | 天天操天天玩 | 国产高清免费在线观看 | 69精品久久久久久久 | 一级在线播放 | 亚洲av永久无码精品一区二区国产 | 少妇被又大又粗又爽毛片久久黑人 | 伊人宗合| 偷拍自拍一区 | 久久综合综合久久 | av大全在线观看 | 人妻精品一区一区三区蜜桃91 | 韩毛片 | 欧美aa级| 亚洲免费天堂 | 免费www xxx| 三级中文字幕 | www五月婷婷 | 免费看成人aa片无码视频羞羞网 | 2025国产精品视频 | 在线看片日韩 | 农村妇女毛片精品久久久 | 天天干b | 精品国产乱码久久久久久蜜臀网站 |