我正在使用以下代码读取结构化的二进制文件

FileInputStream objIS = new FileInputStream("/sdcard/waverider.usr");

DataInputStream objBR = new DataInputStream(objIS);
objwVer = objBR.readShort();
objwSVer = objBR.readShort();
objNoWaypoints = objBR.readShort();

System.out.println(objwVer);
System.out.println(objwSVer);
System.out.println(objNoWaypoints);
objIS.close();


产生结果:
512
0
8706

我追求的结果是
2
0
546

那就是我使用VB.net所获得的:

objwVer = objBR.ReadInt16
objwSVer = objBR.ReadInt16
objNoWaypoints = objBR.ReadInt16


二进制文件如下:

02 00 00 00 22 02 00 00 4b a9 c8 ff b2 2d 33 00

00 00 00 00 04 00 00 00 48 6f 6d 65 00 00 00 00

1c 68 53 0d 10 27 00 00 00 00 01 00 7e 8c c8 ff

我在这里想念什么吗
9d 33 33 00 00 00 00 00 06 00 00 00

最佳答案

你的问题是
您的文件是以小尾数byte order编写的,但是您的代码期望使用大尾数字节顺序。

关于android - 解码二进制文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21679011/

10-10 16:13