Java - 将 byte[] 转换为 int 未给出结果
Java - converting byte[] to int not giving result
我有一个 4 字节的 hexBinary 如下:
FFFFFFC4
它应该 return 有点大但下面的函数只给出 -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
来获得 "something big":
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;
}
我有一个 4 字节的 hexBinary 如下:
FFFFFFC4
它应该 return 有点大但下面的函数只给出 -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
来获得 "something big":
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;
}