0

バイナリ形式から 1 と 0 の文字列を実際に取得する方法はありますか?

# read in image data
fh = open('test.png','rb')
data = fh.read()
fh.close()

# write binary to text file
fh = open('test.txt','w')
fh.write(data)
fh.close
fh.close()

そのデータ文字列を 1 と 0 に変換するにはどうすればよいですか

4

2 に答える 2

2

これにより、文字列の各バイトが 8 桁の 2 進数に変換され、スペースで区切られます。セパレーターは簡単に変更できます。

data = " ".join(bin(ord(b))[2:].rjust(8, "0") for b in data)
于 2012-09-10T04:04:00.527 に答える
1

withfh を明示的に閉じる必要がないように使用します

with open('test.txt','w') as fh:
    fh.write("".join(bin(ord(x))[2:].zfill(8) for x in data)

ファイルが大きい場合、上記は多くのメモリを使用します。代わりにdata、小さなチャンクで読み取り、write()複数回呼び出す必要があります

余談:
fh.closeファイルを閉じるメソッドへの単なる参照です。メソッドを呼び出す (つまり、ファイルを閉じる) には、次のように言う必要があります。fh.close()

于 2012-09-10T04:02:02.803 に答える