netty——數據傳輸載體ByteBuf 中的getbyte()、getshort()、getint()

問題:

目前自學Netty中,正好學到數據傳輸載體ByteBuf的使用,對於其中的get方法獲取到的值不理解。

先輸入byte類型的1、2、3、4,再輸入int類型的12,最後輸入byte類型的5、6。

輸出buffer.getByte(3)=4,這個很容易理解,接下來我就懵逼了。

輸出buffer.getShort(3)=1024,why?

輸出buffer.getInt(3)=67108864,why?

解決:

總所周知:

byte: 1字節,8位,有符號
short:2字節,16位,有符號
int:  4字節,32位,有符號
long: 8字節,64位,有符號

所以:


index                                       getshort(index)          index

0----1: 0000 0001

1----2: 0000 0010                  256+2(0和1)               0

2----3: 0000 0011                  512+2+1(1和2)           1

3----4: 0000 0100                  512+256+4(2和3)       2

4----12:0000 0000                  1024(3和4)                3
5----       0000 0000
6----       0000 0000
7----       0000 1100

8----5: 0000 0101

9----6: 0000 0110


short爲2字節,16位,getshort(0)讀取0和1兩個字節的組合,故值爲258;

                                   getshort(1)讀取1和2兩個字節的組合,故值爲515;(居然不是2和3,懵逼)

                                   getshort(2)讀取2和3兩個字節的組合,故值爲772;

                                   getshort(3)讀取3和4兩個字節的組合,故值爲1024;

getint()獲取的值同理~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章