1
xuroid OP 已解决,这种弱智问题真不应该马上发出来问大家,又删不了贴子。
|
2
qwerthhusn Nov 28, 2019
说实话,问题感觉都没说清楚。
“在 Java 中怎么转换 unsigned 类型的字节数据?”,字节就是字节,没有有符号无符号的说法,就是八个一零位,看你咋看这个字节。 所以问题应该是“在 Java 中怎么将四个字节转成 unsigned int”。可以看 Guava 库的 Ints.fromBytes 工具类,, 而且也没说这四个字节是大端还是小端,那就默认按大端来。 public static int fromBytes(byte b1, byte b2, byte b3, byte b4) { return b1 << 24 | (b2 & 0xFF) << 16 | (b3 & 0xFF) << 8 | (b4 & 0xFF); } Java 中没有 unsigned 这一说,只能用 long 来表示 unsigned int。。看 java.lang.Integer#toUnsignedLong 有现成方法 |
3
diveIntoWork Nov 28, 2019
unsigned int 范围是:0 ~ 4294967295
java 中的 int 范围是:-2147483648 ~ 2147483647 同样是四个字节,因为 java 中最高位是符号位,所以表示的最大值比 unsigned int 小一半。 所以,要把 unsigned int 转成 java 中的 int,至少用 5 个字节 |
4
szq8014 Nov 28, 2019
用 long 就可以了。哈哈哈哈哈哈
|
5
leon0903 Nov 28, 2019
long 应该就可以了吧
|
6
xuanbg Nov 28, 2019
楼主的问题描述看得我都晕了,最后反应过来不就是 int 有符号不够大吗?不够大用 long 啊。
|