如何使用JAVA读取CMatlab创建的二进制文件

如何使用JAVA读取CMatlab创建的二进制文件,第1张

如何使用JAVA读取C / Matlab创建的二进制文件

正如我所猜测的那样,这是一个字节序问题,即您的二进制文件被写为低字节序的整数(可能是因为您使用的是Intel或类似的CPU)。

但是,无论Java代码运行在哪个CPU上,它都在读取大端整数。

为了显示该问题,以下代码将读取您的数据,并在字节序转换之前和之后将整数显示为十六进制数字。

import java.io.*;class TestBinaryFileReading {  static public void main(String[] args) throws IOException {      DataInputStream data_in = new DataInputStream(        new BufferedInputStream( new FileInputStream(new File("binary_file.dat"))));    while(true) {      try {        int t = data_in.readInt();//read 4 bytes        System.out.printf("%08X ",t);        // change endianness "manually":        t = (0x000000ff & (t>>24)) |  (0x0000ff00 & (t>> 8)) |  (0x00ff0000 & (t<< 8)) |  (0xff000000 & (t<<24));        System.out.printf("%08X",t);         System.out.println();      }       catch (java.io.EOFException eof) {        break;      }    }     data_in.close();  }}

如果您不想“手动”更改字节序,请参阅以下问题的答案:将小字节序
文件转换为大字节序



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5104649.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-17
下一篇 2022-11-16

发表评论

登录后才能评论

评论列表(0条)

保存