我如何将liitle Endian二进制文件转换为大Endian二进制文件.我有一个二进制二进制用C写的,我在读这的Java文件,DataInputStream所读取的大端format.i也对字节缓冲区类的外观,但不知道如何使用它让我期望的结果.请帮忙.
非常感谢
bob*_*bah 14
打开NIO FileChannel:
FileInputStream fs = new FileInputStream("myfile.bin");
FileChannel fc = fs.getChannel();
Run Code Online (Sandbox Code Playgroud)
设置ByteBuffer字节顺序(由[get | put]使用Int(),[get | put] Long(),[get | put] Short(),[get | put] Double())
ByteBuffer buf = ByteBuffer.allocate(0x10000);
buf.order(ByteOrder.LITTLE_ENDIAN); // or ByteOrder.BIG_ENDIAN
Run Code Online (Sandbox Code Playgroud)
从FileChannel读取到ByteBuffer
fc.read(buf);
buf.flip();
// here you take data from the buffer by either of getShort(), getInt(), getLong(), getDouble(), or get(byte[], offset, len)
buf.compact();
Run Code Online (Sandbox Code Playgroud)
要正确处理输入的字节顺序,您需要确切地知道文件中存储的内容以及顺序(所谓的协议或格式).
在谷歌搜索了这么多之后,我发现了一个 apache Jar 文件,其中包含 SwappedDataInputStream 类。org.apache.commons.io.input.SwappedDataInputStream。这堂课使我的结果准确。有关该类的完整详细信息,请参阅。
http://commons.apache.org/io/api-1.4/org/apache/commons/io/input/SwappedDataInputStream.html
| 归档时间: |
|
| 查看次数: |
9292 次 |
| 最近记录: |