首页 > 后端开发 > Python教程 > 如何在 Python 中高效地将二进制转换为 ASCII,反之亦然?

如何在 Python 中高效地将二进制转换为 ASCII,反之亦然?

Linda Hamilton
发布: 2024-11-28 10:06:13
原创
135 人浏览过

How to Efficiently Convert Binary to ASCII and Vice Versa in Python?

将二进制转换为 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()
登录后复制

这些方法利用 int.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 &amp; 1)))
登录后复制
'

这些函数使用指定的编码和错误处理对文本进行编码和解码,确保正确处理 Unicode字符。

单源 Python 2/3 兼容版本

此代码与 Python 2 和 3 兼容:

此代码处理两个 Python 版本,同时为二进制和 ASCII 转换提供一组一致的函数。

以上是如何在 Python 中高效地将二进制转换为 ASCII,反之亦然?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板