下面是2进制整数或小数转成16进制数的代码
首先输入一个二进制字符串(正数),有无小数点都可,定义一个函数按四位分割。
b=input("Please input a binary number:")#输入一个二进制字符串
mylist=[]
def sep_four(n):#把二进制数按4位分割
for i in range(0,len(n)//4):
a=int(n[4*i:4*i+4],2)
mylist.append("{:x}".format(a))#转成16进制,并添加到列表中
输入n='10100010'
得到['a','2']
下面是把二进制小数或整数位数补齐4的倍数,然后调用上面的分割函数进行转换
def parTrans(n):#把二进制小数拆成整数部分、小数点、小数部分
(x,t,y)=n.partition('.')
if len(x)%4!=0:
x='0'*(4-len(x)%4)+x
if len(y)%4!=0:
y=y+'0'*(4-len(y)%4)
sep_four(x);mylist.append(t);sep_four(y)#调用上面的分割函数
for i in mylist:
print(i,end='')
def intTrans(x):#如果是整数,那就不用拆
if len(x)%4!=0:
x='0'*(4-len(x)%4)+x
sep_four(x)
for i in mylist:
print(i,end='')
if '.' in b: parTrans(b)
else: intTrans(b)
下面是整个程序在Python中的运行结果
Please input a binary number:111001011
1cb