欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
【轉】網(wǎng)絡(luò )字節序與主機字節序 - 做最好的自己 - wellnp - 和訊博客
網(wǎng)絡(luò )字節序與主機字節序
作者: ppnote 發(fā)表日期: 2006-06-19 22:45 文章屬性: 原創(chuàng ) 復制鏈接


網(wǎng)絡(luò )字節序與主機字節序

不同的CPU有不同的字節序類(lèi)型 這些字節序是指整數在內存中保存的順序 這個(gè)叫做主機序
最常見(jiàn)的有兩種
1. Little endian:將低序字節存儲在起始地址
2. Big endian:將高序字節存儲在起始地址

LE little-endian
最符合人的思維的字節序
地址低位存儲值的低位
地址高位存儲值的高位
怎么講是最符合人的思維的字節序,是因為從人的第一觀(guān)感來(lái)說(shuō)
低位值小,就應該放在內存地址小的地方,也即內存地址低位
反之,高位值就應該放在內存地址大的地方,也即內存地址高位

BE big-endian
最直觀(guān)的字節序
地址低位存儲值的高位
地址高位存儲值的低位
為什么說(shuō)直觀(guān),不要考慮對應關(guān)系
只需要把內存地址從左到右按照由低到高的順序寫(xiě)出
把值按照通常的高位到低位的順序寫(xiě)出
兩者對照,一個(gè)字節一個(gè)字節的填充進(jìn)去

例子:在內存中雙字0x01020304(DWORD)的存儲方式

內存地址
4000 4001 4002 4003
LE 04 03 02 01
BE 01 02 03 04

例子:如果我們將0x1234abcd寫(xiě)入到以0x0000開(kāi)始的內存中,則結果為
      big-endian   little-endian
0x0000   0x12       0xcd
0x0001   0x23       0xab
0x0002   0xab       0x34
0x0003   0xcd       0x12
x86系列CPU都是little-endian的字節序.

網(wǎng)絡(luò )字節順序是TCP/IP中規定好的一種數據表示格式,它與具體的CPU類(lèi)型、操作系統等無(wú)關(guān),從而可以保證數據在不同主機之間傳輸時(shí)能夠被正確解釋。網(wǎng)絡(luò )字節順序采用big endian排序方式。

為了進(jìn)行轉換 bsd socket提供了轉換的函數 有下面四個(gè)
htons 把unsigned short類(lèi)型從主機序轉換到網(wǎng)絡(luò )序
htonl 把unsigned long類(lèi)型從主機序轉換到網(wǎng)絡(luò )序
ntohs 把unsigned short類(lèi)型從網(wǎng)絡(luò )序轉換到主機序
ntohl 把unsigned long類(lèi)型從網(wǎng)絡(luò )序轉換到主機序

在使用little endian的系統中 這些函數會(huì )把字節序進(jìn)行轉換
在使用big endian類(lèi)型的系統中 這些函數會(huì )定義成空宏

同樣 在網(wǎng)絡(luò )程序開(kāi)發(fā)時(shí) 或是跨平臺開(kāi)發(fā)時(shí) 也應該注意保證只用一種字節序 不然兩方的解釋不一樣就會(huì )產(chǎn)生bug.

注:
1、網(wǎng)絡(luò )與主機字節轉換函數:htons ntohs htonl ntohl (s 就是short l是long h是host n是network)
2、不同的CPU上運行不同的操作系統,字節序也是不同的,參見(jiàn)下表。
處理器     操作系統     字節排序
Alpha     全部     Little endian
HP-PA     NT     Little endian
HP-PA     UNIX     Big endian
Intelx86     全部     Little endian <-----x86系統是小端字節序系統
Motorola680x()     全部     Big endian
MIPS     NT     Little endian
MIPS     UNIX     Big endian
PowerPC     NT     Little endian
PowerPC     非NT     Big endian   <-----PPC系統是大端字節序系統
RS/6000     UNIX     Big endian
SPARC     UNIX     Big endian
IXP1200 ARM核心     全部     Little endian
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
大端模式與小端模式、網(wǎng)絡(luò )字節順序與主機字節順序 - ShaHuShaBoJue的專(zhuān)欄 - ...
Big endian and Little endian (2)
大端(Big Endian)與小端(Little Endian)詳解
高低字節序轉換(htonl、ntohl、htons、ntohs函數)
高位優(yōu)先與低位優(yōu)先
long long 類(lèi)型的網(wǎng)絡(luò )字節順序轉換
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久