1
xuroid OP 已解决,这种弱智问题真不应该马上发出来问大家,又删不了贴子。
|
2
qwerthhusn 2019-11-28 15:15:21 +08:00
说实话,问题感觉都没说清楚。
“在 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 2019-11-28 15:49:35 +08:00
unsigned int 范围是:0 ~ 4294967295
java 中的 int 范围是:-2147483648 ~ 2147483647 同样是四个字节,因为 java 中最高位是符号位,所以表示的最大值比 unsigned int 小一半。 所以,要把 unsigned int 转成 java 中的 int,至少用 5 个字节 |
4
szq8014 2019-11-28 17:21:29 +08:00
用 long 就可以了。哈哈哈哈哈哈
|
5
leon0903 2019-11-28 17:25:37 +08:00
long 应该就可以了吧
|
6
xuanbg 2019-11-28 17:57:19 +08:00
楼主的问题描述看得我都晕了,最后反应过来不就是 int 有符号不够大吗?不够大用 long 啊。
|