问题
Python中如何将int在十进制和二、八、十六进制之间互相转换
解决方案
十进制向二、八、十六进制转换
分别使用bin
、oct
、hex
>>> a = 123>>> bin(a)'0b1111011'>>> oct(a)'0o173'>>> hex(a)'0x7b'复制代码
这样转换会有一个前缀0b
、0o
、0x
,如果不想要前缀只想要数值的话,可以使用format
>>> a = 123>>> format(a, 'b')'1111011'>>> format(a, 'o')'173'>>> format(a, 'x')'7b'复制代码
二、八、十六进制向十进制转换
直接使用int()
即可,因为int()
的原型是int(x, base=10)
,所以我们只需要指定base
就行了
>>> a = '1111011'>>> int(a, 2)123>>> a = '173'>>> int(a, 8)123>>> a = '7b'>>> int(a, 16)123复制代码
讨论
如果只是需要在源码中将二、八、十六进制转十进制,实际上只需要写上前缀就可以了,不需要进行转换,数值会自动转换为十进制,例如
>>> a = 0b1111011>>> print(a)123>>> a = 0o173>>> print(a)123>>> a = 0x7b>>> print(a)123复制代码
来源
Stack Overflow
关注
欢迎关注我的微信公众号:python每日一练