バイナリ形式から 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 に変換するにはどうすればよいですか
これにより、文字列の各バイトが 8 桁の 2 進数に変換され、スペースで区切られます。セパレーターは簡単に変更できます。
data = " ".join(bin(ord(b))[2:].rjust(8, "0") for b in data)
with
fh を明示的に閉じる必要がないように使用します
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()