从2字节大端读取16Bit Integer

时间:2015-02-16 16:28:08

标签: java integer byte endianness

我试图跟踪此tutorial关于从srtm-data读取高度的问题。最后,我必须从文件中读取2个字节,这些字节是big-endian,必须将它们转换为java中的整数。

File file = new File(filename);
InputStream inputStream = new FileInputStream(file);
long length = file.length();
byte[] bytes = new byte[(int) length];

inputStream.read(bytes);
inputStream.close();

byte[] byteArr = new byte[2];
byteArr[0] = bytes[pos];
byteArr[1] = bytes[pos+1];

int height = ByteBuffer.wrap(byteArr).order(ByteOrder.BIG_ENDIAN).getInt();

问题是我得到了

java.nio.BufferUnderflowException

因为java期待更多字节。 如何将这两个字节转换为整数?

1 个答案:

答案 0 :(得分:1)

一个整数由4个字节组成,因此你的byteArr需要有4个元素,而不是2个:

byte[] byteArr = new byte[4];