進制轉換其實是一個非常基礎簡單的知識,但是也會很讓人困擾,這裏記錄一下
這裏先明確一下各個進制
進制
十進制:就是最常見的數值類型,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
這裏推薦最後一個方法