將二進位轉換為 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 & 1)))
這些函數使用指定的編碼和錯誤處理對文字進行編碼和解碼,確保正確處理Unicode字元。
單源Python 2/3 相容版本
此程式碼與Python 2 與3 相容:
此程式碼處理兩個Python版本,同時為二進位和ASCII 轉換提供一組一致的函數。
以上是如何在 Python 中高效地將二進位轉換為 ASCII,反之亦然?的詳細內容。更多資訊請關注PHP中文網其他相關文章!