如何判斷主機字節(jié)序

如何判斷主機字節(jié)序

ID:38131649

大小:34.00 KB

頁數(shù):3頁

時間:2019-05-27

如何判斷主機字節(jié)序_第1頁
如何判斷主機字節(jié)序_第2頁
如何判斷主機字節(jié)序_第3頁
資源描述:

《如何判斷主機字節(jié)序》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在行業(yè)資料-天天文庫。

1、如何確定自己主機的字節(jié)序是大端字節(jié)序還是小端字節(jié)序?介紹:何為大端字節(jié)序和小端字節(jié)序?是在內(nèi)存中存儲字節(jié)的兩種方式:大端字節(jié)序:高位值在內(nèi)存中放低位地址;采用這種機制的處理器有IBM3700系列、PDP-10、Mortolora微處理器系列和絕大多數(shù)的RISC處理器。Motorola的PowerPC系列CPU采用bigendian方式存儲數(shù)據(jù)。小端字節(jié)序:低位值在內(nèi)存中放低位地址。按照最低位字節(jié)(包含LSB的字節(jié))至最高位字節(jié)(包含MSB的字節(jié))的順序,存放在連續(xù)的地址中。采用這種機制的處理器有PDP-11、VAX、Intel系列微處理器和一些網(wǎng)絡通信設備。Intel的x8

2、6系列用littleendian方式存儲數(shù)據(jù)。例外:目前在各種體系的計算機中,通常采用big-endian和little-endian兩種字節(jié)存儲機制描述在多字節(jié)數(shù)中各個字節(jié)的存儲順序。除了big-endian和little-endian之外的多字節(jié)存儲順序就是middle-endian。這種存儲順序偶爾會在一些小型機體系中的十進制數(shù)的壓縮格式中出現(xiàn)。方法一:一個主機是大端還是小端要看cpu類型以及運行在上面的操作系統(tǒng)。同一款cpu在不同的操作系統(tǒng)使用的大小端情況是不同的。當然我們通常使用的x86+windows是小端。例子:1Solaris[tm]OE(32-bit)Bi

3、g2Solaris[tm]OE(64-bit)Big3HP-UX(64-bit)Big4HP-UXIA(64-bit)Big5HPTru64UNIXLittle6AIX-BasedSystems(64-bit)Big7MicrosoftWindowsIA(32-bit)Little8MicrosoftWindowsIA(64-bit)Little9IBMzSeriesBasedLinuxBig10LinuxIA(32-bit)Little11LinuxIA(64-bit)Little12MicrosoftWindows64-bitforAMDLittle13Linux64-

4、bitforAMDLittle15HPOpenVMSLittle16AppleMacOSBig17SolarisOperatingSystem(x86)Little18IBMPowerBasedLinuxBig方法二:通過程序查詢可以了解自己的主機的字節(jié)序。程序一:#includeusingnamespacestd;union{intnumber;chars;}test;booltestBigEndin(){test.number=0x01000002;return(test.s==0x01);}voidmain(){if(testBigEndin())

5、cout<<"big"<

6、DIAN的值就是1,否則為0.后續(xù)代碼就可以通過if(BIGENDIAN){……}的形式來判斷大小頭。各操作系統(tǒng)都會實現(xiàn)這個函數(shù):unit16_thtons(uint16_thost);將16位主機字符順序轉(zhuǎn)換成網(wǎng)絡字符順序如果主機字節(jié)序是小頭,則返回十進制host對應的大頭;如果主機字節(jié)序是大頭,則返回十進制host對應的大頭(即不需要轉(zhuǎn)換,本身就是大頭).主機的字節(jié)序是大頭還是小頭由htons自己去確定。假設主機為小頭字節(jié)序,那么十進制數(shù)字1(十六進制數(shù)字就是0x0001)的主機字節(jié)序就是:0X0100用htons將0X0100按小頭字節(jié)序轉(zhuǎn)換為網(wǎng)絡字節(jié)序(大頭)是:0

7、X0001即傳入?yún)?shù)host為0X0100,返回值就是0X0001。而因為程序是在當前平臺上執(zhí)行,所以cpu在讀取16為short時都是按照本級的字節(jié)序小頭來讀的。cpu是不知道你返回的值是大頭字節(jié)序的,它只知道都按本機的小頭字節(jié)序來讀取。所以傳入值為0X0100,即十進制的1;而返回值為0X0001,即256.轉(zhuǎn)換字節(jié)序后,本機cpu讀取出來的short的值是不同的。假設主機是大頭,那么十進制數(shù)字1(十六進制數(shù)字就是0x0001)的主機字節(jié)序就是:0X0001htons不用轉(zhuǎn)換,直接返回,因為本身就是網(wǎng)絡字節(jié)序:

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。