2进制转16进制
本帖最后由 小树林探索者 于 2022-2-15 21:04 编辑def b0(s):
while len(s)%4!=0:
s="0"+s
return s
def zh(s):
t=0;m='0123456789ABCDEF'
for i in s:
t=t*2+int(i)
return m
s=input()
rst=''
s=b0(s)
for i in range(0,len(s),4):
rst=rst+zh(i)
print("2进制",s,"的16进制是",rst)
for i in s:
TypeError: 'int' object is not iterable
请问这段代码有什么错误? 因为你第16行给zh()传入的参数是i,而i是一个整数,整数是不可迭代的,
你在zh()函数里面对传入的参数进行了迭代,所以就报错了,
你可以用str(i)把它转成字符串,字符串是可以迭代的 我刚才调试了一下你的代码,知道你的思路了,至于报错的原因我前面说了,就不再说了,
你想实现你的想法就改一下第16行就好,s从i开始取四个字符,就是s
def b0(s):
while len(s)%4!=0:
s="0"+s
return s
def zh(s):
t=0;m='0123456789ABCDEF'
for i in s:
t=t*2+int(i)
return m
s=input()
rst=''
s=b0(s)
for i in range(0,len(s),4):
rst=rst+zh(s) #这一行我把i改成了s
print("2进制",s,"的16进制是",rst)
页:
[1]