编写一个程序,使用三位一并,四位一并法,将输入的八进制小数转化为二进制再转化为十六进制。如输入16.71(八进制)先输出001110.111001再输出E.E4。求具体代码
def o2b2h(o):
o2b_dic={"0":"000","1":"001","2":"010","3":"011",
"4":"100","5":"101","6":"110","7":"111"}
b2h_dic = {"0000": "0", "0001": "1", "0010": "2", "0011": "3", "0100": "4", "0101": "5",
"0110": "6", "0111": "7", "1000": "8", "1001": "9", "1010": "A",
"1011": "B", "1100": "C", "1101": "D", "1110": "E", "1111": "F"}
o=str(o).split(".")
b=""
for i in o[0]:
b+=o2b_dic[i]
if len(o)>1:
b+="."
for i in o[1]:
b+=o2b_dic[i]
b_re = b.strip("0")
b=b.split(".")
b[0]=(4-len(b[0])%4)*"0"+b[0]
h=""
for i in range(0,len(b[0])-3,4):
h+=b2h_dic[b[0][i:i+4]]
if len(b)>1:
h+="."
b[1]+=(4-len(b[1])%4)*"0"
for i in range(0, len(b[1]) - 3, 4):
h += b2h_dic[b[1][i:i + 4]]
h_re= h.strip("0")
return b_re,h_re
if __name__ == '__main__':
print(o2b2h(16.71))
运行结果:
望采纳
本回答被提问者和网友采纳