4位二进制半字节转十六进制Python程序报错求助(初学者)
解决4位二进制半字节转十六进制字符串的问题
先给你修复好的完整代码,完全保留简单的结构:
def nib(binary_str): # 将4位二进制字符串转十进制,再转成大写十六进制字符 decimal_val = int(binary_str, 2) return format(decimal_val, 'X') if __name__ == "__main__": # 读取输入并按空格分割成单个半字节 input_list = input().split() # 逐个转换并拼接成完整十六进制字符串 hex_output = ''.join(nib(nibble) for nibble in input_list) # 输出最终结果 print(hex_output)
常见问题排查(你可能踩的坑)
nib函数返回格式错误:如果之前用hex()函数,会返回带0x前缀的字符串(比如0x5),直接用会导致结果多冗余前缀;用format(decimal_val, 'X')能直接返回单个大写十六进制字符,完美匹配需求。- 未拼接转换结果:如果循环里单独print每个转换后的字符,会输出成多行或分散字符,必须用
join把所有结果串成一个完整字符串再输出。 - 输入处理不当:如果没对输入执行
split(),会把整个输入当成一个长字符串,无法正确识别单个半字节,split()会自动按空格分割成独立的半字节列表。
测试验证
输入:0101 1101
输出:5D
输入:0000 1001 0001 1111 1100
输出:091FC
内容的提问来源于stack exchange,提问作者kora
相关产品推荐
相关产品推荐

