Netty大小端

Netty大小端

 

在網絡傳輸的過程中,字節存在倆種序列方式,即大端序和小端序。

舉例來說,數值0x2211使用兩個字節儲存:高位字節是0x22,低位字節是0x11。

大端字節序:高位字節在前,低位字節在後,這是人類讀寫數值的方法。

小端字節序:低位字節在前,高位字節在後,即以0x1122形式儲存。

咱們拿一個數字886來舉例子:

888的二進制爲:  【0000 0000】 【0000 0000】【0000 ‭0011】 【0111 1000】‬,以字節單位打印出來爲: [0, 0, 3, 120] ,這種方式就是大端序。

如果按照小端序那麼888的二進制爲: ‭ 【0111 1000】‬  【0000 0011】 【0000 0000】【0000 0000】,以字節爲單位打印出來爲:[120, 3, 0, 0],這種方式就是小端序。

 

Netty大端序寫入:[0, 0, 3, 120]

ByteBuf buf = ByteBufAllocator.DEFAULT.buffer(4);
buf.writeInt(888);
byte[] n = new byte[4];
System.out.println(buf.readBytes(n));
System.out.println(Arrays.toString(n));

Netty小端序寫入:[120, 3, 0, 0]

ByteBuf buf = ByteBufAllocator.DEFAULT.buffer(4);
buf.writeIntLE(888);
byte[] n = new byte[4];
System.out.println(buf.readBytes(n));
System.out.println(Arrays.toString(n));
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章