如何在Python中将24位二进制数拆分为3段并分别处理?
处理24位二进制输入的拆分与转换方案
完整代码
binary_num = input().strip() # 验证输入是否为24位二进制字符串 if len(binary_num) != 24 or not all(c in ('0', '1') for c in binary_num): print("error") else: # 直接通过字符串切片拆分三个8位部分 part1 = binary_num[:8] part2 = binary_num[8:16] part3 = binary_num[16:] # 第一部分:转无符号整数 print(int(part1, 2)) # 第二部分:转8位有符号整数(补码) unsigned_val = int(part2, 2) print(unsigned_val - 256 if unsigned_val >= 128 else unsigned_val) # 第三部分:转ASCII字符 print(chr(int(part3, 2)))
关键逻辑说明
- 拆分方式:没必要把字符串转成列表,Python字符串本身支持切片操作,
[:8]取前8位,[8:16]取中间8位,[16:]取最后8位,精准又高效。 - 无符号整数转换:
int(二进制字符串, 2)是Python内置的二进制转十进制方法,直接得到无符号整数结果。 - 有符号整数转换:8位有符号数采用补码规则,最高位为1时表示负数。先转成无符号整数,若值≥128(即最高位为1),减去256(2^8)即可得到对应的负数。
- ASCII字符转换:先把二进制转成十进制整数,再用
chr()函数映射为对应的ASCII字符。
测试示例
输入:111100011110110100100100
输出:
241 -109 $
内容的提问来源于stack exchange,提问作者maria04
相关产品推荐
相关产品推荐

