Java如何在java中解析uint8?

sta*_*low 10 java bit-manipulation

我有一个来自UDP数据包的uint8 (无符号8位整数).Java仅使用带符号的原语.如何使用java正确解析此数据结构?

Mar*_*aux 21

只需将其作为一个字节读取,然后转换为int.

byte in = udppacket.getByte(0); // whatever goes here
int uint8 = in & 0xFF;
Run Code Online (Sandbox Code Playgroud)

需要位掩码,否则将位8设置为1的值转换为负int.例:

This:                                   10000000
Will result in: 11111111111111111111111110000000
Run Code Online (Sandbox Code Playgroud)

因此,当您向其应用位掩码0xFF时,前导1将被取消.供您参考:0xFF == 0b11111111


Pri*_*ley 5

0xFF & number将数字视为无符号字节。但结果类型是int


Pet*_*rey 5

您可以将 8 位存储在 abyte 如果您确实需要将其转换为无符号值(通常您不需要),您可以使用掩码

byte b = ...
int u = b & 0xFF; // unsigned 0 .. 255 value
Run Code Online (Sandbox Code Playgroud)