八进制转换为十进制
方法1:使用while循环进行转换
以上代码是从提取八进制数的最右边开始提取数字,将数字与基数相乘,最后得到十进制数。
例如:八进制数123:
d=1*(8^2)+2*(8^1)+3*(8^0)=83
方法2:使用for循环进行转换
使用for循环将八进制转换为十进制,该程序使用字符型变量来存储八进制数。
方法3:使用递归进行转换
方法4:使用int()进行转换
int() 方法的语法:
int(x, base=10)
参数:x -- 字符串或数字。base -- 进制数,默认十进制。
>>>int("123",8)
83
十进制转换为八进制
方法1:使用列表进行转换
例如:十进制数33。
1、33除以8的商为4,余数为1。列表o[0]=1。
2、4除以8的商为0余数是4。列表o[1]=4。
商为0时停止循环并以相反的顺序输出列表的值41。
方法2:不使用列表进行转换
方法3:使用递归进行转换
方法4:使用oct()进行转换
>>> oct(83)
0o123
文中涉及代码:
def DtoO(num):
if num>0:
DtoO(num//8)
print(num%8, end='')
num=int(input('请输入一个十进制数字:'))
print("八进制:",end="")
DtoO(num)
print()
def DtoO(num):
o,i=0,1
while num!=0:
y=num%8
o+=y*i
i=i*10
num//=8
print(o)
num=int(input('请输入一个十进制数字:'))
print("八进制:",end="")
DtoO(num)
print()
def DtoO(num):
o=[0]*100
i=0
while num!=0:
o[i]=num%8
num=num//8
i+=1
for j in range(i - 1, -1, -1):
print(o[j], end="")
num=int(input('请输入一个十进制数字:'))
print("八进制:",end="")
DtoO(num)
print()
def OtoD(num):
if num==0:
return 0
else:
return (num%10)+8*OtoD(num// 10)
num=int(input('请输入一个八进制数字:'))
print(f"十进制:{OtoD(num)}")
def OtoD(num):
d=0
length=len(num)
for x in num:
length=length-1
d+=pow(8,length)*int(x)
return d
num=input('请输入一个八进制数字:')
print(f"十进制:{OtoD(num)}")
def OtoD(num):
d=0
base=1
while num>0:
n=num%10
num=num//10
d+=n*base
base=base*8
return d
num=int(input('请输入一个八进制数字:'))
print(f"十进制:{OtoD(num)}")