python 進(jìn)制轉(zhuǎn)換 int、bin、oct、hex的原理
十進(jìn)制轉(zhuǎn)n進(jìn)制都可以使用倒除法:對(duì)十進(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 = 4110111 => 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)換成對(duì)應(yīng)的二進(jìn)制、八進(jìn)制、十六進(jìn)制;注意只能轉(zhuǎn)換整數(shù),返回的數(shù)據(jù)是一個(gè)字符串類型
a = 12# 默認(rèn)數(shù)字都是十進(jìn)制print(a)# 12b = 0b0101010111#以0b開頭的是二進(jìn)制數(shù),默認(rèn)也是十進(jìn)制輸出print(b)# 343c = 0o33# 以0o開頭的是八進(jìn)制數(shù)print(c)# 27d = 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))# 0b1001001001print(bin(0xff))# 0b11111111print(oct(0xff))# 0o377print(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 / int1、若 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 baseprint(int(’10’,2))# 2# print(int(’22’,2))# ValueError: invalid literal for int() with base 2: ’22’print(int(’0xaaa’,16))# 2730print(int(’0b111’,2))# 7print(int(’0o1237’,8))# 671
到此這篇關(guān)于python 進(jìn)制轉(zhuǎn)換 int、bin、oct、hex的原理的文章就介紹到這了,更多相關(guān)python 進(jìn)制轉(zhuǎn)換 內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. Warning: require(): open_basedir restriction in effect,目錄配置open_basedir報(bào)錯(cuò)問題分析2. ASP.NET Core 5.0中的Host.CreateDefaultBuilder執(zhí)行過程解析3. ASP調(diào)用WebService轉(zhuǎn)化成JSON數(shù)據(jù),附j(luò)son.min.asp4. SharePoint Server 2019新特性介紹5. ASP中常用的22個(gè)FSO文件操作函數(shù)整理6. React+umi+typeScript創(chuàng)建項(xiàng)目的過程7. php網(wǎng)絡(luò)安全中命令執(zhí)行漏洞的產(chǎn)生及本質(zhì)探究8. 無線標(biāo)記語言(WML)基礎(chǔ)之WMLScript 基礎(chǔ)第1/2頁9. 三個(gè)不常見的 HTML5 實(shí)用新特性簡(jiǎn)介10. php測(cè)試程序運(yùn)行速度和頁面執(zhí)行速度的代碼
