ホームページ >バックエンド開発 >Python チュートリアル >Python でバイナリを ASCII に、またはその逆に効率的に変換するにはどうすればよいですか?

Python でバイナリを ASCII に、またはその逆に効率的に変換するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-28 10:06:13112ブラウズ

How to Efficiently Convert Binary to ASCII and Vice Versa in Python?

バイナリから 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 &amp; 1)))
'

これらの関数はエンコードし、指定されたエンコードとエラー処理でテキストをデコードし、Unicode の正しい処理を保証します。

単一ソース Python 2/3 互換バージョン

このコードは Python 2 と 3 の両方と互換性があります:

これコードは両方の Python バージョンを処理しながら、バイナリ変換と ASCII 変換のための一貫した関数セットを提供します。

以上がPython でバイナリを ASCII に、またはその逆に効率的に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。