問題:
目前自學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()獲取的值同理~