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

Python でバイナリと ASCII の間で効率的に変換するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-05 15:10:11
オリジナル
947 人が閲覧しました

How to Efficiently Convert Between Binary and ASCII in Python?

バイナリと 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート