我试图跟踪此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期待更多字节。 如何将这两个字节转换为整数?
答案 0 :(得分:1)
一个整数由4个字节组成,因此你的byteArr需要有4个元素,而不是2个:
byte[] byteArr = new byte[4];