在二進位和 ASCII 之間轉換
提供的程式碼使用歸約 lambda 函數將字串轉換為二進位。然而,將二進位轉換回 ASCII 的方法並不是立即顯而易見的。
Python 2(對於 ASCII 字符)
對於 [ -~] 範圍內的 ASCII 字符,Python 2提供了一個簡單的解決方案:
import binascii bin(int(binascii.hexlify('hello'), 16)) # Output: '0b110100001100101011011000110110001101111'
反轉流程:
n = int('0b110100001100101011011000110110001101111', 2) binascii.unhexlify('%x' % n) # Output: 'hello'
Python 3(所有Unicode 字元)
Phon🎜>Phon 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-Aware Conversion
最後,為了相容於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中文網其他相關文章!