Java - 将byte []转换为int而不给出结果

时间:2015-06-12 23:50:25

标签: java int bytearray

我有一个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;
    }

为什么它不起作用?我做错了吗?

1 个答案:

答案 0 :(得分:0)

原始类型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;
}