6

ファイルからバイナリを読み取ってテキスト ファイルに保存し、テキスト ファイルを読み取ってバイナリを保存する小さな Python プログラムを作成しました。しかし、バイナリを動作させることができません...次のようにファイルを読み取ります。

f_bin = open(bin_file,"rb")
to_bin_data = f_bin.read()
bin_data = bin(reduce(lambda x, y: 256*x+y, (ord(c) for c in to_bin_data), 0))
f_bin.close()

これは私にはうまくいきません...バイナリをASCIIに、またはその逆に変換します

この Web ページのようなもの: http://www.roubaixinteractive.com/PlayGround/Binary_Conversion/Binary_To_Text.asp

編集:私は今、長い if else スクリプトを作成しましたが、答えてくれてありがとう

4

3 に答える 3

11

「こんにちは」という言葉を見てみましょう。0110100001100101011011000110110001101111

それを使用できる文字に戻すためchrint(2をベースに)、いくつかのリストスライス...

''.join(chr(int(bin_text[i:i+8], 2)) for i in xrange(0, len(bin_text), 8))

'hello'を取得してバイナリに変換する場合はord、文字列の書式設定を使用できます...

''.join('{:08b}'.format(ord(c)) for c in 'hello')
于 2012-07-22T11:00:54.527 に答える
3

たぶん、組み込み関数を使用できます。

>>> myString = "hello"
>>> ba = bytearray(myString)
>>> ba[0]
104
>>> bin(ba[0])
'0b1101000'

分割0b:

>>> bin(ba[0]).split('b')[1]
'1101000'

また

>>> bin(ba[0])[2:]
'1101000'

スニペットで問題を解決できることを願っています。:)

于 2012-07-22T10:23:44.190 に答える
2

私は構造体モジュールを使用します:

import struct
buf=struct.unpack('c',to_bin_data) # for one character
buf=struct.unpack('s',to_bin_data) # for a string 

編集:申し訳ありませんが、質問を誤解しています...これは、文字のバイナリ表現の文字列ではなく、バイナリデータに対して機能します。

于 2012-07-22T11:26:15.207 に答える