1.进制表示
- 十进制——直接表示:10
- 二进制——(前缀):0B1010
- 八进制——(前缀):0O12
- 十六进制——(前缀):0XA
需要注意以上前缀都是数字零
2.进制转换
(1)十进制转其他
- 十进制转二进制:bin(10)
- 十进制转八进制:oct(10)
- 十进制转十六进制:hex(10)
注意以上输出类型均为字符串,另外如果想去掉进制前缀可以使用切片方法
由于不同编译环境中转换为16进制后,16进制中的字母可能用小写或者大写表示,如果和需要的表示有出入,可以用ord()函数先将字母转换为ASCLL编号,再根据大小写编号大小关系加上32或者减去32,转为小写或者大写对应的字母编号,最后通过chr()函数将编号转换为字母
(2)其他进制转十进制
使用int("String",num)解决,string为其他进制的表示,num为该进制具体进制数。如下:
- 二进制转十进制:int("1010",2)
- 八进制转十进制:int("0o12",8)
- 十六进制转十进制:int("0xa",16)
可以带前缀,也可以不带
(3)需要十进制中转的进制转换
该转换根据以上两种转换可以很容易得出,思路均是使用十进制中转。如下:
- 二转八:二转十,再转八——oct(int("1010",2))
- 八转十六:八转十,再转十六——hex(int("12",8))
方法相同不过多展示
3.蓝桥杯进制转换实例
(1)十六转十
问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
a=input()
test = int(a , 16)
print(test)
(2)十转十六
问题描述
十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。
给出一个非负整数,将它表示成十六进制的形式。
输入格式
输入包含一个非负整数a,表示要转换的数。0<=a<=2147483647
输出格式
输出这个整数的16进制表示
样例输入
30
样例输出
1E
test = hex(int(input()))
a=test[2:]
b= len(a)
print(())
(3)十六转八
问题描述
给定n个十六进制正整数,输出它们对应的八进制数。
输入格式
输入的第一行为一个正整数n (1<=n<=10)。
接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。
输出格式
输出n行,每行为输入对应的八进制正整数。
【注意】
输入的十六进制数不会有前导0,比如012A。
输出的八进制数也不能有前导0。
样例输入
2
39
123ABC
样例输出
71
4435274
num = int(input())
list1 = list()
for i in range(num):
(input())
for i in range(num):
test = oct(int(list1[i],16))
print(test[2:])