java中是否有任何方法与Visual C ++中的ReadInt16()具有相同的功能

时间:2012-06-21 12:04:06

标签: java visual-c++

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

5 个答案:

答案 0 :(得分:5)

如果你是从java.io.InputStream中读取的,你可能想要这样的东西:

DataInputStream dataInputStream = new DataInputStream(inputStream);
short myInt16 = dataInputStream.readShort();

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:0)

您可以尝试RandomAccessR的{​​{3}}方法。

答案 3 :(得分:0)

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

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

答案 4 :(得分: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