Java 如何在 java 中解析 uint8?

2022-09-05 00:12:54

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


答案 1

只需将其读取为字节,然后转换为int。

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

需要位掩码,因为否则,位 8 设置为 1 的值将转换为负整数。例:

This:                                   10000000
Will result in: 11111111111111111111111110000000

因此,当您之后将位掩码0xFF应用于它时,前导1将被抵消。供您参考:0xFF == 0b11111111


答案 2

0xFF & number会将数字视为无符号字节。但生成的类型为int


推荐