java中是否有任何方法与Visual C++中的ReadInt16()具有相同的功能。我必须读取一个二进制文件,其中数字数据以 16 位形式存储。
问问题
147 次
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 回答