繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM