主機位元組序 與 網路位元組序

2022-09-15 21:48:26 字數 2004 閱讀 1553

是指占用記憶體多於乙個位元組型別的資料在記憶體中的存放順序。

但是,網路傳輸、檔案儲存、人類讀寫習慣使用大端位元組序。

j**a中乙個int型資料占用4個位元組,假如有乙個16進製制的int數,int value =(高位元組) 0x01020304 (低位元組)

主機位元組序跟cpu有關的,ia架構(intel、amd)的cpu中是little-endian

所謂的j**a位元組序指的是在j**a虛擬機器中多位元組型別資料的存放順序,j**a位元組序也是big-endian。

由於jvm會根據底層的作業系統和cpu自動進行位元組序的轉換,

所以我們使用j**a進行網路程式設計,幾乎感覺不到位元組序的存在。

public

static

void

byteorder()

big_endian 記憶體資料 [1, 2, 3, 4]

little_endian 記憶體資料 [4, 3, 2, 1]

如果通訊的雙方都是j**a,則根本不用考慮位元組序的問題了。 

j**a 的 byte 範圍是[-128, 127],

j**ascript 的 byte 範圍是[0, 256]

轉換時使用相同的位元組序

//

生成4個位元組的網路位元組序,網路傳輸使用大端位元組序,相當於int2bytearray

byte getnetworkbytesorder(int

sourcenumber)

//還原4個位元組的網路位元組序, 相當於bytearray2int

int recovernetworkbytesorder(byte

orderbytes)

return

sourcenumber;

}

system.out.println(arrays.tostring(inttobytearray(32)));

system.out.println(arrays.tostring(inttobytearray(145)));

system.out.println(arrays.tostring(inttobytearray(256)));

system.out.println(arrays.tostring(inttobytearray2(32)));

system.out.println(arrays.tostring(inttobytearray2(145)));

system.out.println(arrays.tostring(inttobytearray2(256)));

//還原

system.out.println(bytearraytoint2(inttobytearray2(145)));

system.out.println(bytearraytoint(inttobytearray2(145)));

輸出[0, 0, 0, 32]

[0, 0, 0, -111]

[0, 0, 1, 0]

[0, 0, 0, 32]

[0, 0, 0, -111]

[0, 0, 1, 0]

145145

public

static

byte inttobytearray(int

i)

public

static

byte inttobytearray2(int

i)

public

static

int bytearraytoint2(byte

bytearray)

return

value;

}public

static

int bytearraytoint(byte

bytearray)

主機位元組序與網路位元組序

主機位元組序 不同的cpu有不同的位元組序型別 這些位元組序是指整數在記憶體中儲存的順序 這個叫做主機序 最常見的有兩種 1 little endian 將低序位元組儲存在起始位址 2 big endian 將高序位元組儲存在起始位址 le little endian 最符合人的思維的位元組序 位址...

網路位元組序與主機位元組序

1 本地位元組序 由 於不同的計算機系統採用不同的位元組序儲存資料,同樣乙個4位元組的32位整數,在記憶體中儲存的方式就不同.位元組序分為小尾位元組序 little endian 和大尾位元組序 big endian intel處理器大多數使用小尾位元組序,motorola處理器大多數使用大尾 bi...

網路位元組序與主機位元組序

網路位元組序與主機位元組序 不同的cpu有不同的位元組序型別 這些位元組序是指整數在記憶體中儲存的順序 這個叫做主機序 最常見的有兩種 1 little endian 將低序位元組儲存在起始位址 2 big endian 將高序位元組儲存在起始位址 le little endian 最符合人的思維的...