说明

关于进制转换,我们常用到的有 二进制,八进制,十进制,十六进制。
而用到的内置函数有什么呢?

- 二进制:bin()
- 
- 八进制:oct()
- 
- 十进制:int()
- 
- 十六进制:hex()

1、十进制转其他进制

十进制转二进制

bin() 返回一个整数 int 或者长整数 long int 的二进制表示。输入参数为一个int或者long int

>>> bin(4)
'0b100'
>>> bin(10)
'0b1010'
>>> print(type(bin(4)))
<class 'str'>
返回的是字符串,自动带上'Ob'
十进制转八进制

oct() 函数将一个整数转换成 8 进制字符串。

>>> oct(8)
'0o10'
>>> oct(16)
'0o20'
十进制转十六进制

hex() 函数用于将10进制整数转换成16进制

>>> hex(23)
'0x17'
>>> hex(15)
'0xf'

2、其他进制转十进制

class int(object)
 |  int([x]) -> integer
 |  int(x, base=10) -> integer
 |
 |  Convert a number or string to an integer, or return 0 if no arguments
 |  are given.  If x is a number, return x.__int__().  For floating point
 |  numbers, this truncates towards zero.
 |
 |  If x is not a number or if base is given, then x must be a string,
 |  bytes, or bytearray instance representing an integer literal in the
 |  given base.  The literal can be preceded by '+' or '-' and be surrounded
 |  by whitespace.  The base defaults to 10.  Valid bases are 0 and 2-36.
 |  Base 0 means to interpret the base from the string as an integer literal.
 |  >>> int('0b100', base=0)
 |  4

一般情况,int()会有以下用法

int([x]) -> integer
>>> int()
0
>>> int(3.5)
3
>>> int('20')
20
int(x, base=10) -> integer 
如果在给出base的情况下,X的输入一定是字符串
默认情况下,base为10
如果给出base = 0 的情况,如果输入不带进制标记,就直接转换字符串的内容
>>> int('100',0)
100  # 如果输入不带进制标记,就直接转换字符串的内容  与int('100')一样
>>> int('0o100',0)
64  # 0o表示8进制

除此之外,还有一个函数eval() ,用来执行一个字符串表达式,并返回表达式的值。

>>>x = 7
>>> eval( '3 * x' )
21
>>> eval('0b100')
4
二进制转十进制
>>> int('0b100',0)
4
>>> int('100',2)
4
>>> eval('0b100')
4
八进制转十进制

与二进制转十进制同理,八进制标记为0o

十六进制转十进制

与二进制转十进制同理,十六进制为0x

3、二进制,八进制,十六进制之间的转换

· 借助十进制

print(bin(int('0xff', 16))) # 输出0b11111111

· 函数直接住转换

print(bin(0xa)) # 输出0b1010
print(oct(0xa)) # 输出0o12
print(hex(0b1010)) #输出0xa