【问题标题】:Read 16Bit Integer from 2 bytes big endian从 2 字节大端读取 16 位整数
【发布时间】:2015-02-16 16:28:07
【问题描述】:

我正在尝试跟进 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 需要更多的字节。 如何将这两个字节转换为整数?

【问题讨论】:

  • 您可以阅读短片并进行宣传。

标签: java integer byte endianness


【解决方案1】:

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

byte[] byteArr = new byte[4];

【讨论】:

  • 谢谢 :) 我必须将前两个字节设置为 00x0,后两个字节来自文件。现在它可以工作了:)
猜你喜欢
  • 1970-01-01
  • 2012-04-01
  • 1970-01-01
  • 2010-10-07
  • 2014-11-06
  • 1970-01-01
  • 2015-09-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多