2012-12-28 75 views

回答

13

只需讀取它作爲一個字節,然後轉換爲一個int。

byte in = udppacket.getByte(0); // whatever goes here 
int uint8 = in & 0xFF; 

位掩碼是必需的,否則,位8設爲1的值將被轉換爲負int。例如:

This:         10000000 
Will result in: 11111111111111111111111110000000 

因此,當您之後將位掩碼0xFF應用於它時,前導1將被取消。對於您的信息:0xFF == 0b11111111

+0

謝謝,這是非常豐富的。感謝您的回覆 – stackoverflow

+0

謝謝!非常感激 – milosmns

3

0xFF & number會將該數字視爲無符號字節。但是得到的類型是int

3

您可以8位存儲在byte如果你真的需要將其轉換爲無符號值(通常不這樣做),你可以使用口罩

byte b = ... 
int u = b & 0xFF; // unsigned 0 .. 255 value 
2

你可以做這樣的事情:

int value = eightBits & 0xff; 

&運營商(如Java中的所有整數運算符)上蒙上eightBitsint(用符號擴展的符號位)。由於這會將大於0x7f的值轉換爲負值int值,因此需要屏蔽除最低8位以外的所有值。

1

您可以簡單地將它解析爲shortint,它們有足夠的範圍來保存無符號字節的所有值。