def bit_viewer(input_data): try: # 定义 ANSI 转义序列颜色代码 RED = '\033[91m' GREEN = '\033[92m' RESET = '\033[0m' # 尝试将输入转换为十进制整数 if input_data.startswith('0x'): num = int(input_data, 16) else: num = int(input_data) # 将整数转换为二进制字符串,去除前缀 '0b',并补全到 32 位 binary_str = format(num, '032b') result = [] for i in range(32): bit = binary_str[i] # 根据位的值选择不同颜色 if bit == '1': colored_bit = RED + bit + RESET else: colored_bit = GREEN + bit + RESET result.append(f"Bit {31 - i}: {colored_bit}") return "\n".join(result) except ValueError: return "输入无效,请输入有效的十进制或十六进制数。" if __name__ == "__main__": while True: user_input = input("请输入十进制或十六进制数据(十六进制以 0x 开头),输入 'q' 退出:") if user_input.lower() == 'q': break result = bit_viewer(user_input) print(result)