Java - 将Int转换为Byte - 奇怪的结果

时间:2014-07-12 21:34:18

标签: java bytearray bitwise-operators bytebuffer

我在4字节大的块上执行按位运算。我使用ByteBuffer将4字节块转换为4字节整数来完成此操作。

一旦完成,我需要将它们转换回字节。使用ByteBuffer,我正在执行此操作。这里有一些带有数据的示例代码,以突出我的困惑:

int a = 1610612739; //simulate casting the 4-byte  block 60 00 00 03
ByteBuffer b = ByteBuffer.allocate(4);
b.putInt(a);
byte[] b1 = (b.array());

现在,在此代码之后,我希望b1能够保留以下内容:

b1[0]: 60
b1[1]: 00
b1[2]: 00
b1[3]: 03

但那不是发生了什么。相反,我得到

b2[0]: 96
b2[1]: 0
b2[2]: 0
b2[3]: 3

我的样本整数,二进制,应该是::

0110 0000 0000 0000 0000 0000 0000 0011最左边的位是标志。

和十进制的96 00 00 032,516,582,403,它在Java的32位int范围之外。

有谁知道发生了什么?

1 个答案:

答案 0 :(得分:3)

问题在于,您认为它应该显示在十六进制中,但它显示在十进制中。就是这样。