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));

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM