我正在编写一个 Java 程序来对包含 1 个或多个具有不同数据量的测试数据包的二进制文件进行后处理。我使用 BufferedReader 对象解析二进制文件。由于我的程序的目的是更新数据包大小,因此我解析数据包,直到到达数据包标头“Test”指示的下一个数据包。
我的程序在我的 Windows 7 PC 上运行良好,但由于某种原因它不能在我的 Linux 机器上运行。它根本无法像我的 PC 那样正确地查找和读取数据包数据,但我不知道为什么。
我都试过了:
private final int PACKET_DATA_SIZE = 4;
char[] packetData = new char[PACKET_DATA_SIZE];
while( !tempString.equals("Test") ) {
read(br, packetData, PACKET_DATA_SIZE);
tempString = new String(packetData);
if ( currentLocation >= fileSize ) {
break;
}
}
和
while( currentLocation < fileSize ) {
read(br, packetData, PACKET_DATA_SIZE);
if (packetData[0] == 'T' && packetData[1] == 'e' && packetData[2] == 's' && packetData[3] == 't') {
break;
}
}
两者都使用我的读取功能:
public void read(BufferedReader br, char[] cbuf, int length) {
try {
br.read(cbuf, 0, length);
} catch(IOException e) {
e.printStackTrace();
}
currentLocation += length;
}
两者都可以在 Win7 上正常工作,但同样不能在我的 Linux 机器上工作。Linux 如何/为什么解释原始二进制文件中的字符与 Windows 不同?两个二进制文件都以完全相同的方式逐字节写入。谢谢