首頁 >後端開發 >Python教學 >如何在 Python 中高效地將二進位轉換為 ASCII,反之亦然?

如何在 Python 中高效地將二進位轉換為 ASCII,反之亦然?

Linda Hamilton
Linda Hamilton原創
2024-11-28 10:06:13135瀏覽

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

將二進位轉換為 ASCII,反之亦然

二進位和 ASCII 之間的轉換對於編碼和解碼數位資料至關重要。以下是在Python 中有效執行此轉換的方法,可解決您提到的挑戰:

將字串轉換為二進位

要將字串轉換為二進制,您可以使用:

import binascii
bin(int(binascii.hexlify('hello'), 16))

這會將字串轉換為十六進位表示形式,然後轉換為二進位形式,產生與您相同的輸出

將二進位轉換為字元字串

要從二進位轉換為字串,請使用:

n = int('0b110100001100101011011000110110001101111', 2)
binascii.unhexlify('%x' % n)

這會將二進位字串轉換為十六進位值,然後將其解碼為原始字串。

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()

這些方法利用.from_bytes() 和int.to_bytes() 函數,提供處理二進位資料的有效方法。

支援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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn