(此法较慢)
本文介绍从原理上将十六进制数变为八进制数,思路是先将输入的十六进制数变为十进制,再将十进制数变为八进制。代码如下:
n=int(input())
a=[]
for i in range(n):
a.append(str(input()))
for i in a:
b=[]
for j in i:
b.append(j)
l=len(b)
d=0
c=0
for k in range(l):
if b[k]=='A' or b[k]=='a':
d+=10*16**(l-k-1)
elif b[k]=='B' or b[k]=='b':
d+=11*16**(l-k-1)
elif b[k]=='C' or b[k]=='c':
d+=12*16**(l-k-1)
elif b[k]=='D' or b[k]=='d':
d+=13*16**(l-k-1)
elif b[k]=='E' or b[k]=='e':
d+=14*16**(l-k-1)
elif b[k]=='F' or b[k]=='f':
d+=15*16**(l-k-1)
else:
d+=(int(b[k]))*16**(l-k-1)
m=0
while d>0:
p=d%8
d=d//8
c+=p*10**m
m+=1
print(c)
例如:
3
e3d
4abc
ABCDE
7075
45274
2536336
其中3表示将输入3个16进制数,下面输入3个数后直接输出转换后的八进制数。其中3可为任意数。