进制转换:
- 二进制:以0b作为前缀,0b1010
- 八进制:以0o作为前缀,0o173
- 十六进制:以0x作为前缀,0x1f
用print()函数直接输出这些带前缀的数据,可以直接转换为十进制数。
代码语言:javascript复制>>> print(0b1010) #0*2的0次方 1*2的1次方 0*2的二次方 1*2的3次方=10
10
>>> print(0o173) #3*8的0次方 7*8的一次方 1*8的二次方=123
123
>>> print(0x1f) #15*16的0次方 1*16的一次方=31
31
进制转换:
- bin()函数:将十进制转换为二进制
- oct()函数:将十进制转换为八进制
- hex()函数:将十进制转化为十六进制
>>> bin(10)
'0b1010'
>>> oct(15)
'0o17'
>>> hex(42)
'0x2a'
int()函数可以将其他进制函数转换成十进制.
语法:int('数值',进制)
代码语言:javascript复制>>> int(0b101010001)
337
>>> int('101010001',2)
337
第二种方式:被转换的数据必须以字符串的形式进行输入
练习:
题目内容:低频ID卡数据格式转换小常识。将下列16进制串中倒数第5,6位转换为3位十进制数。将最后4位转换为5位十进制卡号,中间用“,”分开。0000944664
代码语言:javascript复制>>> a[-6:-4] #结束编号一定要大于起始编号,-4为结尾且不包含-4的值
'94'
>>> int(a[-6:-4],16) #转化为十进制的3位数
148
>>> a[-4:] #取值最后4位数
'4664'
>>> int(a[-4:],16) #转换为十进制的5位数
18020
>>> str(int(a[-6:-4],16)) ',' str(int(a[-4:],16))
'148,18020'