バイナリと ASCII 間の変換
提供されたコードは、リダクション ラムダ関数を使用して文字列をバイナリに変換します。ただし、バイナリを ASCII に変換する方法はすぐにはわかりません。
Python 2 (ASCII 文字の場合)
[ -~] の範囲の ASCII 文字の場合, Python 2 は、次のような簡単な解決策を提供します。
import binascii bin(int(binascii.hexlify('hello'), 16)) # Output: '0b110100001100101011011000110110001101111'
process:
n = int('0b110100001100101011011000110110001101111', 2) binascii.unhexlify('%x' % n) # Output: 'hello'
Python 3 (すべての Unicode 文字)
Python 3 では、すべての Unicode 文字のサポートが導入されました。次の関数は、統合された変換インターフェイスを提供します。
def text_to_bits(text): bits = bin(int.from_bytes(text.encode(), 'big'))[2:] return bits.zfill(8 * ((len(bits) + 7) // 8)) def text_from_bits(bits): n = int(bits, 2) return n.to_bytes((n.bit_length() + 7) // 8, 'big').decode()
Unicode 対応変換
最後に、Python 2 と 3 の互換性のために、単一ソース コード スニペットを示します。 Unicode 変換を処理するもの:
def text_to_bits(text): bits = bin(int(binascii.hexlify(text.encode()), 16))[2:] return bits.zfill(8 * ((len(bits) + 7) // 8)) def text_from_bits(bits): n = int(bits, 2) return int2bytes(n).decode() def int2bytes(i): hex_string = '%x' % i n = len(hex_string) return binascii.unhexlify(hex_string.zfill(n + (n & 1)))
以上がPython でバイナリと ASCII の間で効率的に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。