私は、行ごとに1組の数字を含むasciiファイルをストレートバイナリ表現に変換するPythonスクリプトを書いていました。ここに私のスクリプトは次のとおりです。Pythonはバイナリデータでlfにcrを追加しますか?
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バイト長くなります。 16進エディタで掘り起こした後、ついに犯人を見つけました。 「10」(Ascii LF)のすべてのインスタンスには、その前にCRが追加されています。それをやめさせるにはどうすればいいですか?
Tl; dr:Pythonはバイナリデータの中でLFにCRを追加していますが、意味がありません。直し方?
あなたはテキストモードでファイルを開いた方です...バイナリモードを使用するには、出力ファイルに '' 'wb'''を使います。 – jasonharper