Python-十六进制转二进制
hex_tuple = ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F')
repair_list = []
binary_list = []
def check_str():
"""检验所输入字符串是否为十六进制字符,且不区分大小写"""
input_str = input('请输入待转十六进制数:')
frist_deal = input_str.upper()
for s in frist_deal:
if s in hex_tuple:
pass
else:
print('所输入的内容有误,验证失败!')
return
print('验证成功,所输入字符串为:%s' % frist_deal)
return frist_deal
def change_chars():
"""将十六进制中的字符转化为十进制的字符"""
hex_list = [str(p) for p in check_str()]
# print(hex_list)
for u in hex_list:
if u == 'A':
i = hex_list.index('A')
hex_list[i] = '10'
elif u == 'B':
i = hex_list.index('B')
hex_list[i] = '11'
elif u == 'C':
i = hex_list.index('C')
hex_list[i] = '12'
elif u == 'D':
i = hex_list.index('D')
hex_list[i] = '13'
elif u == 'E':
i = hex_list.index('E')
hex_list[i] = '14'
elif u == 'F':
i = hex_list.index('F')
hex_list[i] = '15'
else:
pass
return hex_list
# print(change_chars())
def hex_binary():
"""将十六进制转成二进制,不足四位补零"""
num_list = [int(k) for k in change_chars()]
for j in num_list:
while True:
if j != 1:
n = j % 2
repair_list.append(n)
j //= 2
elif j == 1:
repair_list.append(1)
repair_list.reverse()
if len(repair_list) % 4 == 0:
pass
elif len(repair_list) % 4 == 1:
repair_list.insert(0, 0)
repair_list.insert(1, 0)
repair_list.insert(2, 0)
elif len(repair_list) % 4 == 2:
repair_list.insert(0, 0)
repair_list.insert(1, 0)
elif len(repair_list) % 4 == 3:
repair_list.insert(0, 0)
binary_list.extend(repair_list)
repair_list.clear()
break
return binary_list
def print_binary():
binary_str = [str(h) for h in hex_binary()]
binary_int = int(''.join(binary_str))
print("所输入十六进制数转成二进制数为:%d" % binary_int)
binary_list.clear()
print_binary()
Python-二进制转十六进制
input_str = input('请输入待转二进制数:')
input_list = []
list_cut = []
list_deal = []
def binary_hex():
# 将字符串逐个添加至列表
for i in input_str:
input_list.append(i)
# print(input_list)
# 不足补零
if len(input_list) % 4 == 0:
pass
elif len(input_list) % 4 == 1:
input_list.insert(0, '0')
input_list.insert(1, '0')
input_list.insert(2, '0')
elif len(input_list) % 4 == 2:
input_list.insert(0, '0')
input_list.insert(1, '0')
elif len(input_list) % 4 == 3:
input_list.insert(0, '0')
# print(input_list)
# 字符串切片
y = 0
while y < len(input_list):
list_cut.append(input_list[y: (y + 4)])
y += 4
input_list.clear()
# print(list_cut)
num = 0
t = 3
for k in list_cut:
for p in k:
num += int(p) * 2 ** t
t -= 1
list_deal.append(num)
num = 0
t = 3
list_cut.clear()
# print(list_deal)
# 转换字符
list_str = [str(u) for u in list_deal]
list_deal.clear()
for r in list_str:
if r == '10':
o = list_str.index('10')
list_str[o] = 'A'
elif r == '11':
o = list_str.index('11')
list_str[o] = 'B'
elif r == '12':
o = list_str.index('12')
list_str[o] = 'C'
elif r == '13':
o = list_str.index('13')
list_str[o] = 'D'
elif r == '14':
o = list_str.index('14')
list_str[o] = 'E'
elif r == '15':
o = list_str.index('15')
list_str[o] = 'F'
# print(list_str)
# 以字符串形式输出
end_str = ''.join(list_str)
list_str.clear()
print("所输入的二进制数转化为十六进制数为:%s" % end_str)