进制之间转换

吃可爱长大的小学妹 提交于 2019-12-04 20:44:36

Python中进制转换及int()函数

python内部进制转换:

明确一个概念,即所谓的16进制,10进制,2进制,只是一种整型数值的表示方法表示方法,同一个数值可以有的16进制,10进制,2进制的表示,也可以使用16进制,10进制,2进制来创建同一个数值。并且一般在一定范围内,不同方式表示的同一个数字在内存中的存储结构也是相同的。

整形类数值根本就没有进制转换的概念

进制转换

字符串表示的数值可以称它为字符型数值,这是一种数值的表示方法,其本质上是一些由数字和若干字幕所组成的用来表示一个数值的字符串,所谓的进制转换,都要围绕着它来进行。

进制转换三种方法:

进制转换都可以分为:
1、整型转换为字符字符型数值
bin()\ oct()\ hex()\str() (10进制,以及使用专有表示法定义的2/8/16进制整型)

2进制、8进制、10进制、16进制、的整型数值转字符型数值函数

2、字符型数值转换为整型
int() 

3、字符型数值互转
转换,可以参照下面的进制转换表\

进制转换表:

↓   2进制 8进制 10进制    16进制
2进制 -   bin(int(x, 8))  bin(int(x, 10)) bin(int(x, 16))
8进制 oct(int(x, 2))  -   oct(int(x, 10)) oct(int(x, 16))
10进制    str(int(x, 2))  str(int(x, 8))  -   str(int(x, 16))
16进制    hex(int(x, 2))  hex(int(x, 8))  hex(int(x, 10)) -
整型数值作为桥梁,而进行的不同的进制的字符型数值的转换,int()函数可以将一个字符型数值转换为整型数值,就像上面所说的,整型数值类型并没有进制转换的概念,所以如果需要将这个整型数值以其它进制字符型数值进行转,就还需要调用对应的整型转换为字符型数值的函数。而Python默认使用的就是10进制,所以如果要把整型数值转换为10进制的字符型数值,实际上是什么都不需要的,直接print即可

int函数:

int有趣的地方就是可以进行0-36(不包括1)的进制转换如:

>>> int("11",9)
10
>>> int("13",7)
10
>>> int("a",17)
10
0进制会自动判断你是2/8/10/16进制,如果不是这几个会报错

>>> int("111",0)
111
>>> int("0b111",0)
7
>>> int("0o111",0)
73
>>> int("0x111",0)
273
>>> int("0xff",0)
255
>>> int("0xgg",0)  # 17进制
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 0: '0xgg'

1、整型转换为字符字符型数值

将数值16转换为2/8/10/16进制的字符串数值

bin(16)
'0b10000'
oct(16)
'020'
str(16)
'16'
hex(16)
'0x10'

2进制、8进制、10进制、16进制、的整型数值转字符型数值函数

2、字符型数值转换为整型

将2/8/10/16进制的字符串转换为数值16

int("0b10000",2)
16
int("0o020",8)
16
int("16",10)
16
int("0x10",16)
16

3、字符型数值互转

bin(int("16"))  # 10进制字符型数值转2进制字符型数值
'0b10000'
oct(int("10",16))  # 16进制字符型数值转8进制字符型数值
'020'
bin(int("020",8)) # 8进制字符型数值转2进制字符型数值
'0b10000'
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!