使用Python实现十进制转二进制转ASCII再转文本字符串
还原十进制数为原字符串"Hello World"
核心思路
你提到的流程是对的:先把十进制数转成二进制字符串(需补全8位对齐的前导零),再按每8位分割转成ASCII码,最后拼接成原字符串。
具体实现步骤
假设你得到的十进制数是从"Hello World"的字符ASCII二进制拼接后转换而来的(比如这个十进制数是12146064442301774950),可以用以下Python代码反向还原:
# 示例:从"Hello World"转换来的十进制数 dec_num = 12146064442301774950 # 1. 十进制转二进制字符串,去掉前缀'0b' binary_str = bin(dec_num)[2:] # 2. 补前导零,确保二进制总长度是8的倍数(每个ASCII字符占8位) padding_length = (8 - len(binary_str) % 8) % 8 binary_str = '0' * padding_length + binary_str # 3. 按每8位分割,转成十进制ASCII码 ascii_codes = [int(binary_str[i:i+8], 2) for i in range(0, len(binary_str), 8)] # 4. 将ASCII码转成字符并拼接 original_str = ''.join(chr(code) for code in ascii_codes) print(original_str) # 输出:Hello World
关键说明
- 补前导零是必须的:因为单个ASCII字符的二进制是8位,但转十进制时前导零会被忽略,所以反向转换时要补回这些零,保证每8位对应一个字符。
- 如果你的十进制数是通过其他方式生成的(比如直接拼接每个字符的ASCII数字,如
721011081081113287111114108100),则需要按约定的数字长度拆分(通常每个ASCII码补零到3位),不过在线转换器大多采用二进制拼接转十进制的方式,所以上面的代码应该适用。
内容的提问来源于stack exchange,提问作者AU.
相关产品推荐
相关产品推荐

