合 Python进制之间的转换
简介
Python提供了将变量或值从一种类型转换成另一种类型的内置函数,内建函数封装了各种转换函数,可以使用目标类型关键字强制类型转换。例如,int函数能够将符合数学格式数字型字符串转换成整数。
常见的类型转换函数如下所示:
函数 | 描述 |
---|---|
int(x [,base]) | 将x转换为一个整数 |
float(x) | 将x转换到一个浮点数 |
complex(real[,imag]) | 创建一个复数 |
str(x) | 将对象x转换为字符串 |
repr(x) | 将对象x转换为表达式字符串 |
eval(str) | 用来计算在字符串中的有效Python表达式,并返回一个对象 |
tuple(s) | 将序列s转换为一个元组 |
list(s) | 将序列s转换为一个列表 |
set(s) | 转换为可变集合 |
dict(d) | 创建一个字典。d必须是一个序列(key,value)元组 |
frozenset(s) | 转换为不可变集合 |
chr(x) | 将一个整数转换为一个字符 |
ord(x) | 将一个字符转换为它的整数值 |
hex(x) | 将一个整数转换为一个十六进制字符串 |
oct(x) | 将一个整数转换为一个八进制字符串 |
一般使用内置函数进行转换的时候是先将控制台输入的字符串或者是自定义的字符串先转换为10进制然后将10进制转换为其他的进制,常见的是二进制、十进制、八进制、十六进制之间的转换,其中遵循一个原则是:
其他进制转为十进制使用int函数,其他进制转为二进制使用bin函数,其他进制转为八进制使用oct函数,其他进制转为十六进制转为hex函数,并且是借助于10进制作为中间的桥梁进行转换,也就是使用到int()函数。
转换为对应的权重之后对应的字符串会有相应的前缀,二进制前缀为0b,八进制前缀为0o,十六进制前缀为0x
2进制 | 8进制 | 10进制 | 16进制 | |
---|---|---|---|---|
2进制 | - | bin(int(input(),8)) | bin(int(input(),10)) | bin(int(input(),16)) |
8进制 | oct(int(input(), 2)) | - | oct(int(input(),10)) | oct(int(input(),16)) |
10进制 | int(input(),2)) | int(input(),8) | - | int(input(),2) |
16进制 | hex(int(input(), 2)) | hex(int(input(),8)) | hex(int(input(),10)) | - |
使用内置函数的时候反正是转换为哪一个进制就使用一个进制对应的函数即可,中间需要先转换为十进制(int()函数),其中进制转换涉及到的内置函数有:2进制:bin(),8进制:oct(),10进制:int(),16进制:hex()
1 2 3 4 | print(bin(int(input(), 16))) print(int(input(), 10)) print(oct(int(input(), 10))) print(hex(int(input(), 10))) |
还有一种转换方式是使用format函数进行转换,在format中加上b,o,x将其他进制的转换为二进制、八进制或者是十六进制
1 2 3 | print("{:b}".format(int(input(), 8))) print("{:o}".format(int(input(), 8))) print("{:x}".format(int(input(), 8))) |
进制表示
十进制——直接表示:10
二进制——(前缀):0B1010
八进制——(前缀):0O12
十六进制——(前缀):0XA
需要注意以上前缀都是数字零
进制转换
(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))
方法相同不过多展示
示例
1、十进制转二进制(bin)
把一个十进制转化成二进制,我们可以使用python的内置方法 bin
1 2 3 4 5 6 7 8 9 10 | >>> print(oct(99)) 0o143 >>> >>> print(bin(99)) 0b1100011 >>> print(type(bin(99))) <class 'str'> >>> print(bin(99)[2::]) 1100011 >>> |
python 中二进制以ob开头
2、十进制转八进制(oct)
我们再看看十进制转化为八进制,使用方法oct(dec)
1 2 3 4 5 | >>> print(oct(99)) 0o143 >>> >>> print(type(oct(99))) <class 'str'> |
3、十进制转16进制(hex)
十进制转化16进制,同样使用python的内置方法进行hex(dec)
1 2 3 4 5 | >>> print(hex(99)) 0x63 >>> print(type(hex(99))) <class 'str'> >>> |
4、二进制转10进制
1 2 3 4 5 6 | >>> print(int('00001010',2)) 10 >>> >>> >>> print(int('0b00001010',2)) 10 |