バイナリから ASCII への変換、およびその逆の変換
バイナリと ASCII 間の変換は、デジタル データのエンコードとデコードに不可欠です。ここでは、Python でこの変換を効果的に実行し、前述の課題に対処する方法を示します。
文字列をバイナリに変換する
文字列をバイナリに変換するには、以下を使用できます。
import binascii bin(int(binascii.hexlify('hello'), 16))
これにより、文字列が 16 進表現に変換され、次にバイナリに変換され、同じ出力が生成されます。
バイナリから文字列への変換
バイナリから文字列への変換には、以下を利用します。
n = int('0b110100001100101011011000110110001101111', 2) binascii.unhexlify('%x' % n)
これは、バイナリ文字列を 16 進数に変換します。値を取得して元の値にデコードしますstring.
Python 3.2 の互換性
Python 3.2 以降では、次のメソッドを使用できます。
bin(int.from_bytes('hello'.encode(), 'big')) n = int('0b110100001100101011011000110110001101111', 2) n.to_bytes((n.bit_length() + 7) // 8, 'big').decode()
これらのメソッドは int を利用します。 .from_bytes() および int.to_bytes() 関数。バイナリを処理する効率的な方法を提供します。 data.
Unicode 文字のサポート (Python 3)
Python 3 で Unicode 文字を処理するには、以下を使用します。
def text_to_bits(text, encoding='utf-8', errors='surrogatepass'): bits = bin(int.from_bytes(text.encode(encoding, errors), 'big'))[2:] return bits.zfill(8 * ((len(bits) + 7) // 8)) def text_from_bits(bits, encoding='utf-8', errors='surrogatepass'): n = int(bits, 2) return n.to_bytes((n.bit_length() + 7) // 8, 'big').decode(encoding, errors) or '<pre class="brush:php;toolbar:false">import binascii def text_to_bits(text, encoding='utf-8', errors='surrogatepass'): bits = bin(int(binascii.hexlify(text.encode(encoding, errors)), 16))[2:] return bits.zfill(8 * ((len(bits) + 7) // 8)) def text_from_bits(bits, encoding='utf-8', errors='surrogatepass'): n = int(bits, 2) return int2bytes(n).decode(encoding, errors) def int2bytes(i): hex_string = '%x' % i n = len(hex_string) return binascii.unhexlify(hex_string.zfill(n + (n & 1)))
これらの関数はエンコードし、指定されたエンコードとエラー処理でテキストをデコードし、Unicode の正しい処理を保証します。
単一ソース Python 2/3 互換バージョン
このコードは Python 2 と 3 の両方と互換性があります:
これコードは両方の Python バージョンを処理しながら、バイナリ変換と ASCII 変換のための一貫した関数セットを提供します。
以上がPython でバイナリを ASCII に、またはその逆に効率的に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。