简短的问题
有没有办法将两个字节读取为有符号整数?
详细信息和示例
给定 java 中的两个字节,每个代表一个整数,我们可以将它们转换为它们一起表示的 int 值,只需:
byte[] byteArray = new byte[4];
byteArray[0] = 0x00;
byteArray[1] = 0x00;
byteArray[2] = .. //a byte representing an integer
byteArray[3] = .. //a byte representing an integer
int i = ((byteArray[2] & 0xff) << 8) | (byteArray[3] & 0xff);
当两位代表正整数时,它可以完美地工作。但是当两个整数为负时它会失败。例如,当:
byteArray[2] = 0xff; // -1
byteArray[3] = 0xf9; // -7
我得到:
i = 65529;
这是不正确的。它应该只是-8,即0xf8。
我尝试使用 ByteBuffer:
byte[] array = new byte[4];
array[0] = 0x00;
array[1] = 0x00;
array[2] = 0xff;
array[3] = 0xf9;
ByteBuffer buffer = ByteBuffer.wrap(array);
int i = buffer.getInt();
没用。得到相同的结果:
i = 65529
这些只是例子。会有更多字节,它们将代表正整数和负整数。
有没有办法将两个字节作为有符号整数读取并获得正确的结果?
提前致谢。