[英]Java - converting byte[] to int not giving result
我有一个4字节的hexBinary,如下所示:
FFFFFFC4
它应该返回较大的值,但以下函数仅给出-60:
public static int byteArrayToInt(byte[] b)
{
return b[3] & 0xFF |
(b[2] & 0xFF) << 8 |
(b[1] & 0xFF) << 16 |
(b[0] & 0xFF) << 24;
}
为什么不起作用? 难道我做错了什么?
原始类型int
长度为32位,而最高位是符号。 值FFFFFFC4
的MSB设置为1
,表示负数。
您可以使用long
而不是int
来获得“大事”:
public static long byteArrayToInt(byte[] b)
{
return (((long) b[3]) & 0xFF) |
(((long) b[2]) & 0xFF) << 8 |
(((long) b[1]) & 0xFF) << 16 |
(((long) b[0]) & 0xFF) << 24;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.