从 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];
我正在尝试跟进这个 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];