java将txt文件转为二进制bin文件和python转为二进制文件不一致****
将txt文件转为二进制bin文件 txt文件每一行内容位(0,0,0,0)这种形式
java代码:
try (BufferedReader txtReader = new BufferedReader(new FileReader(ascTxtName));
DataOutputStream binOutputStream = new DataOutputStream(new FileOutputStream(ascBinName))) {
String line;
while ((line = txtReader.readLine()) != null) {
String[] values = line.substring(1, line.length() - 1).split(",");
if (values.length == 4) {
float[] floatValues = new float[4];
for (int i = 0; i < 4; i++) {
floatValues[i] = Float.parseFloat(values[i]);
}
ByteBuffer buffer = ByteBuffer.allocate(4 * Float.BYTES);// 分配一个ByteBuffer,大小为4个浮点数的字节数
buffer.order(ByteOrder.LITTLE_ENDIAN);
for (float value : floatValues) {
buffer.putFloat(value); // 将浮点数写入ByteBuffer
}
byte[] binaryData = buffer.array();
binOutputStream.write(binaryData);
// binOutputStream.write(ByteUtils.floatArrToByteArr(floatValues));
}
}
}
python代码转为bin文件代码
with open(txt_file_path, "r") as txt_file, open(bin_file_path, "wb") as bin_file:
# 逐行读取txt文件内容
for line in txt_file:
# 解析每一行的数据
values = tuple(map(float, line.strip()[1:-1].split(','))) # 解析 (0,0,0,0) 这种格式
print(values)
# 使用struct.pack将数据转换为二进制形式
binary_data = struct.pack('4f', *values) # 根据数据格式进行打包,'4i'表示4个整数
print(binary_data)
# 写入二进制数据到文件
bin_file.write(binary_data)
print(f"已将TXT文件 {txt_file_name} 转换为二进制文件 {bin_file_path}")
需要使java转出来的二进制bin文件和python保持一致 有小伙伴知道解决方法吗