首页 >后端开发 >Python教程 >如何在Python中高效地在二进制和ASCII之间转换?

如何在Python中高效地在二进制和ASCII之间转换?

Barbara Streisand
Barbara Streisand原创
2024-12-05 15:10:11927浏览

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 字符)

Python 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