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

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

Barbara Streisand
發布: 2024-12-05 15:10:11
原創
925 人瀏覽過

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板