0

java中是否有任何方法与Visual C++中的ReadInt16()具有相同的功能。我必须读取一个二进制文件,其中数字数据以 16 位形式存储。

4

5 回答 5

5

如果您正在从 java.io.InputStream 读取数据,您可能需要这样的内容:

DataInputStream dataInputStream = new DataInputStream(inputStream);
short myInt16 = dataInputStream.readShort();
于 2012-06-21T12:12:14.380 回答
2

不,Java 中的 int 固定为 32 位。但是short是16位;也许你可以使用它。

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

听起来你必须做一些工作。

于 2012-06-21T12:08:35.370 回答
0

值得注意的是,Java 默认使用大端。许多基于 MS 的系统使用 little endian,因此您可能希望改用 ByteBuffer。

对小于 2 GB 的文件执行此操作的一种简单方法是对文件进行内存映射并使用 order(ByteOrder.LITTLE_ENDIAN) 您也可以使用 position(pos) 随机访问此文件。

于 2012-06-21T12:19:34.923 回答
0

你可以试试RandomAccessR's readInt16()方法。

于 2012-06-21T12:09:45.657 回答
0

我建议使用ByteBuffer读取二进制数字数据,尤其是在使用 c/c++ 时,因为 Java 的默认字节顺序是大端,而在 c/c++ 中是小端。

byte[] bin_data = {0x01, 0x02, 0x03, 0x04};
ByteBuffer bb = ByteBuffer.wrap (bin_data);
bb.order (ByteOrder.LITTLE_ENDIAN);
System.out.println (String.format("0x%04X", bb.getShort ());  // 0x0201
System.out.println (String.format("0x%04X", bb.getShort ());  // 0x0403
于 2012-06-21T12:22:40.173 回答