从 2 字节大端读取 16 位整数

Read 16Bit Integer from 2 bytes big endian

我正在尝试跟进这个 tutorial 关于从 srtm-data 读取高度的问题。最后我必须从一个文件中读取 2 个字节,它们是大端字节序的并且必须将它们转换为 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 需要更多字节。 如何将这两个字节转换为整数?

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

byte[] byteArr = new byte[4];