Python整数进制间转换
发布时间: 2020-06-13 更新时间: 2023-06-08
Python Python,进制转换 8.40 K 7 分钟 534
Python整数进制间转换
tips:
- 本文代码基于python3编写
- 代码仓库
Python进制
Python中能够识别二进制、八进制、十进制及十六进制,Python整数显示进制为十进制,其他进制作为补充。
例如12在Python中各进制下的表示:
进制 | 表示 |
---|---|
二进制 | 0b1100 |
八进制 | 0o14 |
十进制 | 12 |
十六进制 | 0xc |
二进制
二进制是计算技术中广泛采用的一种数制。二进制是一种以2为基数的计数法,采用0和1两个数,逢二进一。
-
二进制转八进制
二进制转八进制,二进制3位为一个单位按照二进制转十进制的方式转换,依次类推然后倒序拼接即可。
#----- 手动转换--------# # 取3位为一个单位,不够的补零 0b1100 -> 0b001100 # 从右向左取第一组3位,作为八进制第0位数字 100 -> 1*2**2 + 0*2**1 + 0*2**0 = 4 # 从右向左取第二组3位(不够3位补零),作为八进制第1位数字 001 -> 0*2**2 + 0*2**1 + 1*2**0 = 1 # 最后八进制数 0o14 #----- Python函数转换--------# # 方法1,oct函数 >>> oct(0b1100) '0o14' # 方法2,先转为十进制,然后转为八进制 >>> oct(int("0b1100",2)) '0o14' >>> oct(int(0b1100)) '0o14'
-
二进制转十进制
二进制数第0位的权值是2的0次方,第1位的权值是2的1次方,依次类推,权值乘以相应系数并相加即可得到十进制数。
#----- 手动转换--------# 0b1100 -> 1*2**3 + 1*2**2 + 0*2**1 + 0*2**0 = 12 #----- Python函数转换--------# # 方法1,字符型整数转十进制,指定解析进制类型 >>> int('0b1100',2) 12 # 方法2,自动识别输入进制类型,并转为十进制 >>> int(0b1100) 12
-
二进制转十六进制
二进制转十六进制,二进制4位为一个单位按照二进制转十进制的方式转换,依次类推然后倒序拼接即可。由于十六进制就是逢16进1,但我们只有0~9这十个数字,所以我们用A,B,C,D,E,F这六个字母来分别表示10,11,12,13,14,15。字母不区分大小写。
#----- 手动转换--------# # 取4位为一个单位,不够的补零 0b1100 -> 0b1100 # 从右向左取第一组4位,作为十六进制第0位数字 1100 -> 1*2**3 + 1*2**2 + 0*2**1 + 0*2**0 = 12 -> c # 最后十六制数 0xc #----- Python函数转换--------# # 方法1,hex函数 >>> hex(0b1100) '0xc' # 方法2,先转为十进制,然后转为十六进制 >>> hex(int("0b1100",2)) '0xc' >>> hex(int(0b1100)) '0xc'
八进制
八进制是一种以8为基数的计数法,采用0,1,2,3,4,5,6,7八个数字,逢八进一。
-
八进制转二进制
八进制转二进制是二进制转八进制的反向过程,按照顺序,每1位八进制数改写成等值的3位二进制数,次序不变,不足时在最左边补零。
#----- 手动转换--------# # 从右向左取第一位数转换 4 = 1*2**2 + 0*2**1 + 0*2**0 -> 100 # 从右向左取第二位数转换 1 = 1*2**0 -> 001 # 最后二进制 0b001100 或 0b1100 #----- Python函数转换--------# # 方法1,bin函数 >>> bin(0o14) '0b1100' # 方法2,先转为十进制,然后转为二进制 >>> bin(int("0o14",8)) '0b1100' >>> bin(int(0o14)) '0b1100'
-
八进制转十进制
八进制数第0位的权值是8的0次方,第1位的权值是8的1次方,依次类推,权值乘以相应系数并相加即可得到十进制数。
#----- 手动转换--------# 14 -> 1*8**1 + 4*8**0 = 12 #----- Python函数转换--------# >>> int("0o14",8) 12 >>> int(0o14) 12
-
八进制转十六进制
八进制转十六进制有两种方法,一种是转为二进制然后再转十六进制,另一种是转为十进制然后转为十六进制。
#----- 手动转换--------# # 先转换为二进制,然后转换为十六进制 0o14 -> 0b1100 -> 1*2**3 + 1*2**2 + 0*2**1 + 0*2**0 = 12 -> 0xc # 先转换为十进制,然后转换为十六进制 0o14 -> 1*8**1 + 4*8**0 = 12 -> 0xc #----- Python函数转换--------# >>> hex(0o14) '0xc' >>> hex(int("0o14",8)) '0xc' >>> hex(int(0o14)) '0xc'
十进制
-
十进制转二进制
十进制转二进制,采用“除二取余,逆序排列”的方法,用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为小于1时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。
#----- 手动转换--------# # 12转换二进制如下 12/2 ->0 6/2 ->0 3/2 ->1 1/2 ->1 12 --> 1100 #----- Python函数转换--------# >>> bin(12) '0b1100' >>> bin(int("12",10)) '0b1100' >>> hex(int(12)) '0b1100'
-
十进制转八进制
十进制转八进制,采用“除八取余,逆序排列”的方法,类似于十进制转二进制的方法。
#----- 手动转换--------# # 12转换八进制如下 12/8 -> 4 1/8 -> 1 12 --> 14 #----- Python函数转换--------# >>> oct(12) '0o14' >>> oct(int("12",10)) '0o14' >>> oct(int(12)) '0o14'
-
十进制转十六进制
十进制转十六进制,采用“除十六取余,逆序排列”的方法,类似于十进制转二进制的方法。用A,B,C,D,E,F这六个字母来分别表示10,11,12,13,14,15,字母不区分大小写。
#----- 手动转换--------# # 12转换十六进制如下 12/16 -> 12 12 --> 12 --> C #----- Python函数转换--------# >>> hex(12) '0xc' >>> hex(int("12",10)) '0xc' >>> hex(int(12)) '0xc'
十六进制
-
十六进制转二进制
十六进制转二进制,十六进制的一位对应二进制的四位,即每次取一位十六进制,按照十进制转二进制的方法,转换为4位的二进制。
#----- 手动转换--------# # 取一位十六进制转换二进制,依次类推,然后在组合即可 0xac c -> 12 -> 1100 a -> 10 -> 1010 0xac -> 10101100 #----- Python函数转换--------# >>> bin(0xac) '0b10101100' >>> bin(int("0xac",16)) '0b10101100' >>> bin(int(0xac)) '0b10101100'
-
十六进制转八进制
十六进制转八进制有两种方法,一种是先转换为二进制然后在转换为八进制,另外一种是先转换为十进制然后在转换为八进制。
#----- 手动转换--------# # 先转换为二进制,然后转换为八进制 0xc -> 0b1100 100 -> 1*2**2 + 0*2**1 + 0*2**0 = 4 001 -> 0*2**2 + 0*2**1 + 1*2**0 = 1 0xc -> 0o14 # 先转换为十进制,然后转换为八进制 0xc -> 12*16**0= 12 -> 0o14 #----- Python函数转换--------# >>> oct(0xc) '0o14' >>> oct(int("0xc",16)) '0o14' >>> oct(int(0xc)) '0o14'
-
十六进制转十进制
十六进制数第0位的权值是16的0次方,第1位的权值是16的1次方,依次类推,权值乘以相应系数并相加即可得到十进制数。
#----- 手动转换--------# 0xc -> 12*16**0 = 12 #----- Python函数转换--------# >>> int("0xc",16) 12 >>> int(0xc) 12
总结
- Python进制转换函数,
bin
二进制、oct
八进制、int
十进制、hex
十六进制 - 十进制转二进制,除2取余法
- 十进制转八进制,除8取余法
- 十进制转十六进制,除16取余法
- 二进制转十进制,各位数*2^n,然后相加
- 八进制转十进制,各位数*8^n,然后相加
- 十六进制转十进制,各位数*16^n,然后相加
- 八进制与十六进制之间的转换的两种方法。
- 第一种:先转成二进制然后再相互转换。
- 第二种:先转成十进制然后再相互转换。

