Python中的進制轉(zhuǎn)換詳解
Pytdon 進制轉(zhuǎn)換
Pytdon為我們提供了強大的內(nèi)置函數(shù)和格式化數(shù)字的方法去實現(xiàn)進制轉(zhuǎn)換的功能,下面一一介紹。
先將所有的函數(shù)羅列出來,如下:
↓ | 2進制 | 8進制 | 10進制 | 16進制 |
2進制 | - | bin(int(n,8)) | bin(int(n,10)) | bin(int(n,16)) |
8進制 | oct(int(n,2)) | - | oct(int(n,10)) | oct(int(n,16)) |
10進制 | int(n,2) | int(n,8) | - | int(n,16) |
16進制 | hex(int(n,2)) | hex(int(n,8)) | hex(int(n,10)) | - |
下面來逐一介紹每個函數(shù)的具體使用方法:
2進制轉(zhuǎn)換成其他進制:
2進制轉(zhuǎn)換成8進制:oct(int(n,2))
輸入: 1010
輸出: 0o12
2進制轉(zhuǎn)換成10進制:int(n,2)
n=input() print(int(n,2))
輸入:1010
輸出:10
2進制轉(zhuǎn)換成16進制:hex(int(n,2))
n=input() print(hex(int(n,2)))
輸入:1010
輸出:0xa
8進制轉(zhuǎn)換成其他進制:
8進制轉(zhuǎn)換成2進制:bin(int(n,8))
n=input() print(bin(int(n,8)))
輸入:1010
輸出:0b1000001000
8進制轉(zhuǎn)換成10進制:int(n,8)
n=input() print(int(n,8))
輸入:1010
輸出:520
8進制轉(zhuǎn)換成16進制:hex(int(n,16))
n=input() print(hex(int(n,8)))
輸入:1010
輸出:0x208
10進制轉(zhuǎn)換成其他進制:
說明:10進制轉(zhuǎn)換可以直接采取上述表格中的形式,讀入字符串,先轉(zhuǎn)換為10進制的數(shù),再用函數(shù)進行操作轉(zhuǎn)換成其他進制。
但同時可以這樣操作,讀入的時候直接進行強制類型轉(zhuǎn)換操作,轉(zhuǎn)為int類型(pytdon中的int類型的數(shù)據(jù)就是10進制)
10進制轉(zhuǎn)換成2進制:bin(n)
n=int(input()) print(bin(n))
輸入:10
輸出:0b1010
10進制轉(zhuǎn)換成8進制:oct(n)
n=int(input()) print(oct(n))
輸入:10
輸出:0o12
10進制轉(zhuǎn)換成16進制:hex(n)
n=int(input()) print(hex(n))
輸入:10
輸出:0xa
16進制轉(zhuǎn)換成其他進制:
16進制轉(zhuǎn)換成2進制:bin(int(n,16))
n=input() print(bin(int(n,16)))
輸入:a
輸出:0b1010
16進制轉(zhuǎn)換成8進制:oct(int(n,16))
n=input() print(oct(int(n,16)))
輸入:a
輸出:0o12
16進制轉(zhuǎn)換成10進制:int(n,16)
n=input() print((int(n,16)))
輸入:a
輸出:10
注意:我們可以發(fā)現(xiàn),除了轉(zhuǎn)換成10進制的數(shù),其他的進制轉(zhuǎn)換結(jié)果都帶有前綴,2進制是0b,8進制是0o,16進制是0x。
但是我們在絕大部分使用進制轉(zhuǎn)換后的數(shù)據(jù)時,是不需要它的前綴的。
所以筆者這里介紹兩種方法,去掉它的前綴。
去掉前綴的方法
方法一:使用字符串切片操作
原理:就是將進制轉(zhuǎn)換后得到的結(jié)果對其進行字符串切片操作,將得到的結(jié)果從第三個字符開始取結(jié)果即可,這樣我們可以得到不帶前綴的結(jié)果
舉例:
//10進制轉(zhuǎn)換成2進制 n=int(input()) print(bin(n)[2:])//切片操作
輸入:10
輸出:1010
//10進制轉(zhuǎn)換成8進制 n=int(input()) print(oct(n)[2:])//切片操作
輸入:10
輸出:12
//10進制轉(zhuǎn)換成16進制 n=int(input()) print(hex(n)[2:])//切片操作
輸入:10
輸出:a
筆者這里以10進制轉(zhuǎn)換其他進制進行了舉例,其他的情況類比即可。
方法二:使用format函數(shù)進行格式化數(shù)字操作
說明:首先,筆者在前面說過,不同類型的進制轉(zhuǎn)換的原理時先轉(zhuǎn)換為十進制,然后再用相關(guān)的函數(shù)進行禁止轉(zhuǎn)換操作,而format函數(shù)里面有格式化數(shù)字的方法可以直接實現(xiàn)進制轉(zhuǎn)換的功能,下面一一介紹:
其他類型轉(zhuǎn)換為2進制: 操作:在format函數(shù)的槽中添加一個b 即可實現(xiàn)其他類型對2進制的轉(zhuǎn)換,下面舉例說明
n=input() print("{:b}".format(int(n,8))) //先將8進制的數(shù)轉(zhuǎn)換為10進制, //然后在format的槽中添加一個b,等價于實現(xiàn)了bin函數(shù)的功能 //但是此結(jié)果是不帶有0b前綴的
輸入:1010
輸出:1000001000
其他類型轉(zhuǎn)換為8進制:
操作:在format函數(shù)的槽中添加一個o 即可實現(xiàn)其他類型對8進制的轉(zhuǎn)換,下面舉例說明
n=input() print("{:o}".format(int(n,16))) //先將一個16進制數(shù)轉(zhuǎn)換為10進制 //然后利用format函數(shù)格式化數(shù)字方法轉(zhuǎn)換即可
輸入:a
輸出:12
其他類型轉(zhuǎn)換為16進制: 操作:在format函數(shù)的槽中添加一個x 即可實現(xiàn)其他類型對2進制的轉(zhuǎn)換,下面舉例說明
n=input() print("{:x}".format(int(n,8))) //先將一個8進制的數(shù)轉(zhuǎn)換為16進制 //然后原理同上
輸入:1010
輸出:208
注意:由于轉(zhuǎn)換成10進制本來就是不帶前綴的,無需用format格式化數(shù)字方法控制
到此這篇關(guān)于Python中的進制轉(zhuǎn)換詳解的文章就介紹到這了,更多相關(guān)Python進制轉(zhuǎn)換內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python如何使用Eel和HTML開發(fā)桌面應(yīng)用
這篇文章主要介紹了Python使用Eel和HTML開發(fā)桌面應(yīng)用問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-01-01利用python在大量數(shù)據(jù)文件下刪除某一行的例子
今天小編就為大家分享一篇利用python在大量數(shù)據(jù)文件下刪除某一行的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08一篇文章告訴你如何用Python控制Excel實現(xiàn)自動化辦公
這篇文章主要介紹了教你怎么用Python處理excel實現(xiàn)自動化辦公,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)python的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-08-08Python 使用Numpy對矩陣進行轉(zhuǎn)置的方法
今天小編就為大家分享一篇Python 使用Numpy對矩陣進行轉(zhuǎn)置的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01Python基于SciPy庫實現(xiàn)統(tǒng)計分析與建模
SciPy是一個強大的Python庫,提供了豐富的科學(xué)計算和數(shù)據(jù)分析工具,本文我們將探討如何使用Python和SciPy庫進行統(tǒng)計分析和建模,感興趣的可以學(xué)習(xí)一下2023-06-06Python matplotlib畫圖實例之繪制擁有彩條的圖表
這篇文章主要介紹了Python matplotlib畫圖實例之繪制擁有彩條的圖表,具有一定借鑒價值,需要的朋友可以參考下2017-12-12