目录
1.题目描述
给定n个十六进制正整数,输出它们对应的八进制数。
输入的第一行为一个正整数n (1<=n<=10)。
接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。
2.思路
先将十六进制转为其他进制,再有其他进制转八进制
3.方法
3.1方法一
n=int(input())
li=[]
for i in range(n):
if n<=10:
s=input()#所有输入默认字符串
if len(s)<=100000:
res_1=int(s,16)#这里的int(s,16)代表把16进制的s转化成10进制
res_2=oct(res_1)#这里的oct代表把一个整数转化为八进制
li.append(res_2[2:])#这里的[2:]是代表结果从第三位开始取
for i in li:
print(i,end='\n')
3.2方法二
def main():
n=int(input())
lst=[]
for i in range(n):
num1=input()
lst.append(num1)
for num2 in lst:
print( '{:o}'.format(int(('0x'+num2),16)))
main()
4.知识点
4.1其他进制转二进制
- 十进制转换二进制
>>>bin(1) 0b01
- 八进制转换二进制
>>>bin(0o10) 0b1000
- 十六进制转换二进制
>>>bin(0xf) 0b1111
4.2其他进制转八进制
-
二进制 转八进制
>>>oct(0b101) 0o5
-
十六进制转八进制
>>>oct(0xf) 0o17
4.3其他进制转十进制
-
八进制转十进制
>>>int(0o10) 8
- 十六进制转十进制
>>>int(0xf) 15
- 二进制转十进制
>>>int(0b10) 2
4.3其他转十六进制
-
八进制转十六进制
>>>hel(0o10) 0x8
- 二进制转十六进制
>>>int(0b111) 0x7