-1

のバイナリ データを含むテキスト ファイルがありますpng(少なくとも、そうであると確信しているので、その仮定から外れます)。

とにかく:私はそれをに戻す必要がありpngます。

binasciiライブラリを使用してそれを実行しようとしましたunhexlifyが、画像を開こうとする"this file is corrupted"とエラーが発生します。

だから私が求めてstrいるのは、画像として見ることができるようにファイルに入れるにはどうすればよいですか? ありがとう

4

1 に答える 1

0

私の理解が正しければ、あなたのファイルは ascii の 1 と 0 で構成されているのでopen("myfile.txt", "r").read()"100110000..."

その場合、以下が役立ちます。

with open("myfile.txt", "r") as f:
    txt = f.read()
b = "".join(chr(int(txt[i*8:(i+1)*8],2)) for i in range(len(txt) / 8))
with open("myfile.png", "wb") as f:
    f.write(b)

unhexlifyファイルがバイナリであるのに、16 進数から変換しようとしているため、問題が発生しています。最初の 8 文字 ( 10011000) を に変換する必要"\x98"がありますが、それらは 4 組の 16 進数, ,unhexlifyとして扱われ、したがって に変換されます。10011000'\x10\x01\x10\x00'

そうは言っても、ファイルサンプルでこれを実行すると、PNG画像のような結果が得られません. PNG 仕様http://www.libpng.org/pub/png/spec/1.2/PNG-Structure.htmlによると、PNG ファイルの最初のバイトは常に 137 ですが、ファイルの最初のバイトは 10011000 = 0x98 = 152 です。 .

于 2013-04-28T01:42:52.350 に答える