溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

python 中進(jìn)制轉(zhuǎn)換的原理是什么

發(fā)布時(shí)間:2021-01-13 14:22:26 來源:億速云 閱讀:226 作者:Leah 欄目:開發(fā)技術(shù)

這篇文章給大家介紹python 中進(jìn)制轉(zhuǎn)換的原理是什么,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

原理

十進(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ù),否則就會報(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ī)范,否則會報(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)換的原理是什么就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI