Python3进制转换

进制转换其实是一个非常基础简单的知识,但是也会很让人困扰,这里记录一下

这里先明确一下各个进制

进制

十进制:就是最常见的数值类型,1,2,3,...,99,...
八进制:0o173,数字0加字母o(october)开头,或者直接以o开头
二进制:0b1111011,数字0加字母b(binary)开头,或者直接以b开头
十六进制:0x7b,数字0加字母x(hex)开头,或者直接以x开头
在进制转换中,一般三位二进制对应一位八进制,四位二进制对应一位十六进制

转换

在交互性的解释器中

#这里用了ipython,python3的版本,以十进制的123举例
In [1]: num_base10 = 123

In [2]: num_base16 = hex(123)

In [3]: num_base8 = oct(123)

In [4]: num_base2 = bin(123)

In [5]: num_base2,num_base8,num_base10,num_base16
Out[5]: ('0b1111011', '0o173', 123, '0x7b')

可以很明显的看到各个进制的特点,也就是我们之前标题:进制中写的内容,具体的bin(),oct(),int(),hex()是转换方式,这样可以在交互性的解释器中使用,但是不太适合正常编程

在IDE使用

num_base10 = 123
num_base16 = hex(num_base10)
num_base8 = oct(num_base10)
num_base2 = bin(num_base10)
print("各个进制的值为:")
print(num_base10,num_base16,num_base8,num_base2)
print("将二、八、十六转换为十进制:")
re1_num_base10 = int(num_base2,2)
re2_num_base10 = int(num_base8,8)
re3_num_base10 = int(num_base16,16)
print(re1_num_base10,re2_num_base10,re3_num_base10)
print("将各个值转换为八进制:")
re4_num_base8 = oct(int(num_base16,16))
re5_num_base8 = oct(num_base10)
re6_num_base8 = oct(int(num_base2,2))
print(re4_num_base8,re5_num_base8,re6_num_base8)
print("将各个进制转化为十六进制")
re7_num_base16 = hex(int(num_base2,2))
re8_num_base16 = hex(int(num_base8,8))
re9_num_base16 = hex(int(num_base10))
print(re7_num_base16,re8_num_base16,re9_num_base16)
print("还有一种方式:")
re10_num_base16 = hex(int(num_base2,base=2))
re11_num_base16 = hex(int(num_base8,base=8))
re12_num_base16 = hex(int(num_base10))
print(re10_num_base16,re11_num_base16,re12_num_base16)
print("这里推荐最后一个方法")

得到的结果如下:

各个进制的值为:
123 0x7b 0o173 0b1111011
将二、八、十六转换为十进制:
123 123 123
将各个值转换为八进制:
0o173 0o173 0o173
将各个进制转化为十六进制
0x7b 0x7b 0x7b
还有一种方式:
0x7b 0x7b 0x7b
这里推荐最后一个方法

 

发布了83 篇原创文章 · 获赞 42 · 访问量 18万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章