我正在使用以下代码读取结构化的二进制文件
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/