37 lines
1.2 KiB
Python
37 lines
1.2 KiB
Python
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) |