You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中实现文本与8位二进制(扩展ASCII)的互转?

文本与8位二进制(扩展ASCII)互转解决方案

文本转8位二进制

你只需要修改格式化字符串的规则,把原来的"{0:b}"改成"{0:08b}"——这里的08表示输出的二进制字符串固定为8位,不足的话在前面补零。同时为了支持扩展ASCII(字符范围0-255),编码时建议用latin-1而非ascii,避免遇到非标准ASCII字符时报错。

示例代码:

text = 'text'
# 用latin-1编码支持扩展ASCII(0-255范围的字符)
text_bytes = bytes(text, 'latin-1')
# 格式化每个字节为8位二进制,用空格分隔
binary_str = ' '.join(["{0:08b}".format(byte) for byte in text_bytes])
print(binary_str)

运行后输出:

01110100 01100101 01110011 01110100

8位二进制转回文本

针对拆分后的8位二进制字符串,按空格分割后逐个转成整数,再组合成字节对象,最后用latin-1解码回文本,就能完美兼容扩展ASCII字符:

示例代码:

binary_str = '01110100 01100101 01110011 01110100'
# 按空格拆分二进制字符串,转成整数列表
byte_list = [int(bin_part, 2) for bin_part in binary_str.split()]
# 转成字节对象后解码
text = bytes(byte_list).decode('latin-1')
print(text)

运行后输出:

text

封装成函数(方便复用)

如果需要频繁使用,可以封装成两个函数:

def text_to_8bit_binary(text):
    text_bytes = bytes(text, 'latin-1')
    return ' '.join(["{0:08b}".format(byte) for byte in text_bytes])

def eightbit_binary_to_text(binary_str):
    byte_list = [int(bin_part, 2) for bin_part in binary_str.split()]
    return bytes(byte_list).decode('latin-1')

# 测试
test_text = 'Hello! 扩展ASCII测试: ñ'
binary = text_to_8bit_binary(test_text)
print("二进制:", binary)
recovered_text = eightbit_binary_to_text(binary)
print("转回文本:", recovered_text)

这样不管是标准ASCII还是扩展ASCII字符,都能正确完成互转,且操作简洁,不会出现手动补零后转回麻烦的问题。

内容的提问来源于stack exchange,提问作者JoelTech43

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 12:10:37