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;
}