python进制转换
前言
原理:python内置函数进行进制转换的原理是将读入的一个字符串(python默认读入的都是字符串形式)转为10进制,然后再用相关函数进行其他进制转换其中关于各进制之间的转换关系的学习,接下来我将较为详细的对其进行介绍。
一、基本进制类型
1.bin()函数
-
描述
bin() 返回一个整数 int 或者长整数 long int 的二进制表示。 -
语法
以下是 bin() 方法的语法:bin(x)
-
参数
x -- int 或者 long int 数字
-
返回值
字符串。 -
实例
以下展示了使用 bin 函数的实例:
>>>bin(10)
'0b1010'
>>> bin(20)
'0b10100'
2.oct()函数
-
描述
oct() 函数将一个整数转换成 8 进制字符串。Python2.x 版本的 8 进制以 0 作为前缀表示。
Python3.x 版本的 8 进制以 0o 作为前缀表示。 -
语法
oct 语法:oct(x)
参数说明:
x -- 整数。
-
返回值
返回 8 进制字符串。 -
实例
以下实例展示了 oct 的使用方法:
实例(Python 2.0+)
>>> oct(10)
'012'
>>> oct(20)
'024'
>>> oct(15)
'017'
实例(Python 3.0+)
>>> oct(10)
'0o12'
>>> oct(20)
'0o24'
>>> oct(15)
'0o17'
3.int()函数
-
描述
int() 函数用于将一个字符串或数字转换为整型。 -
语法
以下是 int() 方法的语法:class int(x, base=10)
-
参数
x -- 字符串或数字。 base -- 进制数,默认十进制。
-
返回值
返回整型数据。 -
实例
以下展示了使用 int() 方法的实例:
>>>int() # 不传入参数时,得到结果0
0
>>> int(3)
3
>>> int(3.6)
3
>>> int('12',16) # 如果是带参数base的话,12要以字符串的形式进行输入,12 为 16进制
18
>>> int('0xa',16)
10
>>> int('10',8)
8
4.hex()函数
-
描述
hex() 函数用于将10进制整数转换成16进制,以字符串形式表示。 -
语法
hex 语法:hex(x)
参数说明:
x -- 10进制整数
-
返回值
返回16进制数,以字符串形式表示。 -
实例
以下实例展示了 hex 的使用方法:
>>>hex(255)
'0xff'
>>> hex(-42)
'-0x2a'
>>> hex(1L)
'0x1L'
>>> hex(12)
'0xc'
>>> type(hex(12))
<class 'str'> # 字符串
二、进制之间的转换关系
1.二进制转换其他进制
-
二进制转换八进制
2进制转换成8进制:oct(int(n,2))
n=input() print(oct(int(n,2)))
输入: 1010 输出: 0o12
-
二进制转换十进制
2进制转换成10进制:int(n,2)
n=input() print(int(n,2))
输入:1010 输出:10
-
二进制转换十六进制
2进制转换成16进制:hex(int(n,2))
n=input() print(hex(int(n,2)))
输入:1010 输出:0xa
2.八进制转换其他进制
-
八进制转换二进制
8进制转换成2进制:bin(int(n,8))
n=input() print(bin(int(n,8)))
输入:1010 输出:0b1000001000
-
八进制转换十进制
8进制转换成10进制:int(n,8)
n=input() print(int(n,8))
输入:1010 输出:520
-
八进制转换十六进制
8进制转换成16进制:hex(int(n,16))
n=input() print(hex(int(n,8)))
输入:1010 输出:0x208
3.十进制转换其他进制
说明:10进制转换可以直接采取上述表格中的形式,读入字符串,先转换为10进制的数,再用函数进行操作转换成其他进制。
但同时可以这样操作,读入的时候直接进行强制类型转换操作,转为int类型(python中的int类型的数据就是10进制)
-
十进制转换二进制
10进制转换成2进制:bin(n)
n=int(input()) print(bin(n))
输入:10 输出:0b1010
-
十进制转换八进制
10进制转换成8进制:oct(n)
n=int(input()) print(oct(n))
输入:10 输出:0o12
-
十进制转换十六进制
10进制转换成16进制:hex(n)
n=int(input()) print(hex(n))
输入:10 输出:0xa
4.十六进制转换其他进制
-
十六进制转换二进制
16进制转换成2进制:bin(int(n,16))
n=input() print(bin(int(n,16)))
输入:a 输出:0b1010
-
十六进制转换八进制
16进制转换成8进制:oct(int(n,16))
n=input() print(oct(int(n,16)))
输入:a 输出:0o12
-
十六进制转换十进制
16进制转换成10进制:int(n,16)
n=input() print((int(n,16)))
输入:a 输出:10
注意:我们可以发现,除了转换成10进制的数,其他的进制转换结果都带有前缀,2进制是0b,8进制是0o,16进制是0x。但是我们在绝大部分使用进制转换后的数据时,是不需要它的前缀的。所以笔者这里介绍两种方法,去掉它的前缀。
三、去前缀方法
1.使用字符串切片
-
原理:
就是将进制转换后得到的结果对其进行字符串切片操作,将得到的结果从第三个字符开始取结果即可,这样我们可以得到不带前缀的结果 -
举例:
//10进制转换成2进制
n=int(input())
print(bin(n)[2:])//切片操作
输入:10
输出:1010
//10进制转换成8进制
n=int(input())
print(oct(n)[2:])//切片操作
输入:10
输出:12
//10进制转换成16进制
n=int(input())
print(hex(n)[2:])//切片操作
输入:10
输出:a
笔者这里以10进制转换其他进制进行了举例,其他的情况类比即可。
2.运用format()函数格式化数字
-
说明:
首先,笔者在前面说过,不同类型的进制转换的原理时先转换为十进制,然后再用相关的函数进行禁止转换操作,而format函数里面有格式化数字的方法可以直接实现进制转换的功能,下面一一介绍: -
其他类型转换为2进制:
操作:在format函数的槽中添加一个b 即可实现其他类型对2进制的转换,下面举例说明n=input() print("{:b}".format(int(n,8))) //先将8进制的数转换为10进制, //然后在format的槽中添加一个b,等价于实现了bin函数的功能 //但是此结果是不带有0b前缀的
输入:1010 输出:1000001000
-
其他类型转换为8进制:
操作:在format函数的槽中添加一个o 即可实现其他类型对8进制的转换,下面举例说明n=input() print("{:o}".format(int(n,16))) //先将一个16进制数转换为10进制 //然后利用format函数格式化数字方法转换即可
输入:a 输出:12
-
其他类型转换为16进制:
操作:在format函数的槽中添加一个x 即可实现其他类型对2进制的转换,下面举例说明n=input() print("{:x}".format(int(n,8))) //先将一个8进制的数转换为16进制 //然后原理同上
输入:1010 输出:208
注意:由于转换成10进制本来就是不带前缀的,无需用format格式化数字方法控制
总结
本篇学习笔记参考
https://blog.youkuaiyun.com/weixin_43353539/article/details/89444838