我正在编写一个 python 脚本,它将每行包含一对数字的 ascii 文件转换为直接的二进制表示。这是我的脚本:
in_file = open("p02_0609.bin", 'r')
out_file = open("sta013.bin", 'w')
out_data = bytearray()
for line in in_file:
addr, i2c_data = [int(x) for x in line.split(" ")]
out_data.append(addr)
out_data.append(i2c_data)
out_file.write(out_data)
out_file.close()
in_file.close()
以及它正在读取的文件样本(总共约 2000 行)
58 1
42 4
40 0
41 0
32 0
33 0
34 0
35 0
36 0
37 0
38 0
39 0
40 1
40 2
33 143
40 3
33 0
40 4
40 5
40 6
40 7
40 8
40 9
40 10
40 11
输出文件以奇数字节结束,因为所有数据都是成对的,所以不应该这样结束,并且比预期的长约 80 个字节。在用十六进制编辑器四处寻找之后,我终于找到了罪魁祸首。“10”(Ascii LF)的每个实例都在其前面附加了一个 CR。我如何让它停止这样做?
Tl; dr:Python 是个笨蛋,在二进制数据中将 CR 添加到 LF 中,这是没有意义的。怎么修?