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

Python字符转8位二进制问题:前导零丢失导致无法逆向转换

修复PyScript中字符转二进制丢失前导零的问题

问题根源在于字符转二进制时未强制补全到8位:默认bin()函数返回的二进制字符串会省略高位前导零,而数字字符的ASCII值对应的二进制位数恰好不足8位,导致转换后长度不够,最终无法逆向还原。

修复后的核心转换代码

替换原有字符转二进制逻辑,用以下两种方式确保输出固定8位二进制:

方式1:使用format()格式化(推荐)

def char_to_binary(char):
    # 替换指定特殊字符为下划线
    special_chars = '!@#$%^&*() '
    if char in special_chars:
        char = '_'
    # 将ASCII值格式化为8位二进制,自动补前导零
    return format(ord(char), '08b')

方式2:使用zfill()补零

def char_to_binary(char):
    special_chars = '!@#$%^&*() '
    if char in special_chars:
        char = '_'
    # 去掉bin()返回的0b前缀后,左侧补零到8位
    return bin(ord(char))[2:].zfill(8)

逆向转换验证

用以下代码可正确还原字符:

def binary_to_char(bin_str):
    # 将8位二进制字符串转为整数,再转成对应字符
    return chr(int(bin_str, 2))

比如数字字符'5',ASCII值为53,转换后得到00110101,逆向转换时int('00110101', 2)得到53,chr(53)可准确还原为'5'。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 05:58:25