java读c二进制文件_如何使用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();
}
}
如果您不想“手動”更改字節序,請參閱以下問題的答案:將小字節序
文件轉換為大字節序
2020-11-01
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的java读c二进制文件_如何使用JAVA读取C / Matlab创建的二进制文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python获取方法的装饰方法_pyth
- 下一篇: 军校对视力有什么样的要求?