首頁 >後端開發 >Python教學 >如何在Python中高效地在二進位和ASCII之間轉換?

如何在Python中高效地在二進位和ASCII之間轉換?

Barbara Streisand
Barbara Streisand原創
2024-12-05 15:10:11954瀏覽

How to Efficiently Convert Between Binary and ASCII in Python?

在二進位​​和 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中文網其他相關文章!

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