python 進(jìn)制轉(zhuǎn)換 int、bin、oct、hex的原理
原理
十進(jìn)制轉(zhuǎn)n進(jìn)制都可以使用倒除法:對十進(jìn)制進(jìn)行除n的運(yùn)算,直到商為0為止,然后將各個(gè)步驟中得到的余數(shù)倒著寫出來.
n進(jìn)制轉(zhuǎn)十進(jìn)制:(例子:二進(jìn)制轉(zhuǎn)十進(jìn)制)
101001 => 2^5 + 2^3 + 1 = 32 + 8 + 1 = 41
10111 => 2^4 + 2^2 + 2 + 1 = 16 + 4 + 2 +1 = 23
同樣類推一下,n進(jìn)制轉(zhuǎn)十進(jìn)制就是將2為底換成n為底就好了
還有其他方法,比如使用中間二進(jìn)制,
例如,將十進(jìn)制轉(zhuǎn)成八進(jìn)制或者十六進(jìn)制,先轉(zhuǎn)成二進(jìn)制再轉(zhuǎn)成八進(jìn)制或者十六進(jìn)制
十進(jìn)制 => 二進(jìn)制 => 十六進(jìn)制
520 => 1000001000 (512+8) => 10 0000 1000 => 208(十六進(jìn)制)
1314 => 10100100010(二進(jìn)制) => 2442(八進(jìn)制) => 522(十六進(jìn)制)
八進(jìn)制或者十六進(jìn)制轉(zhuǎn)成十進(jìn)制
十六進(jìn)制 => 二進(jìn)制 => 十進(jìn)制
522 => 0101 0010 0010 => 1024 + 256 + 32 + 2 = 1280+34 = 1314(十進(jìn)制)
十進(jìn)制轉(zhuǎn)其他進(jìn)制的數(shù)
使用內(nèi)置函數(shù)bin、oct、hex可以將整數(shù)轉(zhuǎn)換成對應(yīng)的二進(jìn)制、八進(jìn)制、十六進(jìn)制;
注意只能轉(zhuǎn)換整數(shù),返回的數(shù)據(jù)是一個(gè)字符串類型
a = 12# 默認(rèn)數(shù)字都是十進(jìn)制 print(a)# 12 b = 0b0101010111#以0b開頭的是二進(jìn)制數(shù),默認(rèn)也是十進(jìn)制輸出 print(b)# 343 c = 0o33# 以0o開頭的是八進(jìn)制數(shù) print(c)# 27 d = 0x24# 以0x開頭的是十六進(jìn)制數(shù) print(d)# 36
a = 12 # 12是十進(jìn)制數(shù) print(bin(a))# 0b1100 使用bin內(nèi)置函數(shù)可以將數(shù)字轉(zhuǎn)換為二進(jìn)制 print(oct(a))# 0o14 使用oct內(nèi)置函數(shù)可以將數(shù)字轉(zhuǎn)換為八進(jìn)制 print(hex(a))# 0xc 使用hex內(nèi)置函數(shù)可以將數(shù)字轉(zhuǎn)換為十六進(jìn)制 print(type(bin(a)))# <class 'str'> print(bin(0o1111))# 0b1001001001 print(bin(0xff))# 0b11111111 print(oct(0xff))# 0o377 print(hex(0b00011111)) # 0x1f # print(bin(1.12)) # print(oct(1.12)) # print(hex(1.12)) # TypeError: 'float' object cannot be interpreted as an integer
其他進(jìn)制轉(zhuǎn)換成十進(jìn)制
int函數(shù)的使用
int(x, base=10)base是進(jìn)制,默認(rèn)是十進(jìn)制
int函數(shù)常用來將其他類型的數(shù)據(jù)轉(zhuǎn)換成整型
注意:
x 有兩種:str / int
1、若 x 為純數(shù)字,就不能給base傳參數(shù),否則就會(huì)報(bào)錯(cuò)
2、若 x 為 str,則可以給base傳參,不傳就默認(rèn)是10;給base傳什么參數(shù)就認(rèn)為此字符串為什么進(jìn)制的數(shù),然后把它轉(zhuǎn)換成十進(jìn)制的數(shù),但字符串里的數(shù)必須符合該進(jìn)制規(guī)范,否則會(huì)報(bào)錯(cuò)
print(int(3.112))# 3
# print(int(3.112,8))# TypeError: int() can't convert non-string with explicit base
print(int('10',2))# 2
# print(int('22',2))# ValueError: invalid literal for int() with base 2: '22'
print(int('0xaaa',16))# 2730
print(int('0b111',2))# 7
print(int('0o1237',8))# 671
到此這篇關(guān)于python 進(jìn)制轉(zhuǎn)換 int、bin、oct、hex的原理的文章就介紹到這了,更多相關(guān)python 進(jìn)制轉(zhuǎn)換 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python實(shí)現(xiàn)猜拳游戲項(xiàng)目
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)猜拳游戲項(xiàng)目,以excel形式保存信息,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-11-11
Python連接Kingbase的實(shí)現(xiàn)示例
Kingbase是一種開源的數(shù)據(jù)庫管理系統(tǒng),與Oracle數(shù)據(jù)庫的語法和功能非常相似,本文主要介紹了Python連接Kingbase的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2024-12-12
Python+MongoDB自增鍵值的簡單實(shí)現(xiàn)
下面小編就為大家?guī)硪黄狿ython+MongoDB自增鍵值的簡單實(shí)現(xiàn)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-11-11
pytorch 實(shí)現(xiàn)查看網(wǎng)絡(luò)中的參數(shù)
今天小編就為大家分享一篇pytorch 實(shí)現(xiàn)查看網(wǎng)絡(luò)中的參數(shù),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01
Python學(xué)習(xí)之configparser模塊的使用詳解
ConfigParser是用來讀取配置文件的包。這篇文章主要通過一些簡單的實(shí)例帶大家了解一下ConfigParser模塊的具體使用,感興趣的小伙伴跟隨小編一起了解一下2023-01-01
Python使用concurrent.futures模塊實(shí)現(xiàn)多進(jìn)程多線程編程
Python的concurrent.futures模塊可以很方便的實(shí)現(xiàn)多進(jìn)程、多線程運(yùn)行,減少了多進(jìn)程帶來的的同步和共享數(shù)據(jù)問題,下面就跟隨小編一起了解一下concurrent.futures模塊的具體使用吧2023-12-12
詳解python __init__.py 和 __all__作用
導(dǎo)入文件夾包的時(shí)候,會(huì)運(yùn)行寫在該文件夾包下的__init__.py文件,這主要是__init__.py的作用,本文結(jié)合示例代碼介紹了python __init__.py 和 __all__作用,感興趣的朋友一起看看吧2023-02-02

