Python隨筆3:二進制、八進制嫩挤、十六進制與十進制整數(shù)之間的轉換

:本文所有代碼均經(jīng)過Python 3.7實際運行檢驗害幅,保證其嚴謹性。

Python中整數(shù)的進制

Python中的整數(shù)默認都是十進制的岂昭,其表示方法和我們日辰孟蓿看到的沒有不同,任意給定一個正數(shù)比如a = 49佩抹,都默認變量a代表的是十進制的整數(shù)叼风。

Python語言一樣可以用二進制、八進制和十六進制來表示整數(shù)棍苹,與十進制表示法不同无宿,這些進制法的表示需要在整數(shù)字面值加一個前綴即可。
十進制demical——無前綴枢里。如338孽鸡。
二進制binary——0b或OB前綴蹂午,如0b1011001。
八進制octal——0o前綴彬碱,如0o557豆胸。
十六進制hexadecimal——0x前綴,如0x16f巷疼。

一晚胡、二進制、八進制嚼沿、十六進制的整數(shù)轉換為十進制的整數(shù)

如何把十進制數(shù)number轉換成二進制估盘、八進制和二進制的整數(shù)?

方法是直接使用Python內置函數(shù)bin(number)骡尽、oct(number)和hex(number)遣妥。
簡單而粗暴。

a = 16  #a是一個十進制整數(shù)攀细。
bin(a)
Out[39]: '0b10000'
oct(a)  #十進制轉換成八進制箫踩。
Out[40]: '0o20'
hex(a)  #十進制轉換成十六進制。
Out[41]: '0x10'
二谭贪、十進制的整數(shù)轉換為二進制班套、八進制、十六進制的整數(shù)

如何把二進制故河、八進制和十進制整數(shù)x轉換成十進制的整數(shù)吱韭?

同樣一個函數(shù)就能搞定,但是這個轉換相比上面的要略微麻煩一點點鱼的。
方法是用int()這個內置函數(shù)理盆,可能有人看到這點就覺得沒難度了。但凑阶,其實這里很容易出錯猿规。

一般來說,int()我們用得挺多宙橱,一般把一串只有數(shù)字的字符串轉換為int整數(shù)姨俩,或者浮點數(shù)向零取整。比如:

int('98999')
Out[34]: 98999

type('98999')
Out[35]: str

int('98999')
Out[36]: 98999

type(int('98999'))
Out[37]: int

int(-3.5)
Out[38]: -3

int(3.5)
Out[39]: 3

但是师郑,如果要用int()來進行不同進制之間的轉換時环葵,其用法就有了一點變化。
int()的完整語法是
int(x, base=10)宝冕,關于此函數(shù)张遭,官方的解釋是這樣的:

返回一個基于數(shù)字或字符串 x 構造的整數(shù)對象,或者在未給出參數(shù)時返回 0地梨。
如果 x 不是數(shù)字菊卷,或者有 base 參數(shù)缔恳,x 必須是字符串、bytes洁闰、表示進制為 base 的 整數(shù)字面值 的 bytearray 實例歉甚。

換句話說,默認base=10扑眉,即十進制纸泄;若是base要更改默認情況,比如改成base=2襟雷,那么它表示前面的x是二進制整數(shù)時刃滓,x的類型就有了變化仁烹,不能是int整型耸弄,而必須是str字符串類型了。

所以卓缰,把二進制计呈、八進制和十進制整數(shù)x轉換成二進制的整數(shù)有兩種情況:

第一種情況很簡單,以二進制轉換為十進制為例征唬,把二進制的整數(shù)表示為Python語言規(guī)定的那樣捌显,人覺得別捏但機器能識別的形式:'0b101'。這時直接使用int()函數(shù)即可总寒。加了'0b'開頭的二進制數(shù)扶歪,此時就是一個int,可以假設它是用十進制的形式來表示二進制數(shù)摄闸。

如下面所給的例子:

x = 0b101

type(x)
Out[50]: int  #此時type()作用于二進制整數(shù)x時善镰,被識別為int類型。

int(x)
Out[51]: 5

第二種情況復雜一些年枕,但用得可能更多一些炫欺。對于人的思維,輸入一個八進制數(shù)熏兄,比如342品洛,會直接輸入342,而不會去帶前綴'0o'摩桶。對于這樣的數(shù)字桥状,如何轉換成二進制才是我們正常思維容易遇到的問題。

前面對int(x, base=10)有過解釋硝清,當base不再是默認的10的時候岛宦,x不能再是int型數(shù)據(jù),而必須轉為str字符串類型耍缴,此函數(shù)才能起作用砾肺,否則會報錯挽霉。拿下面的例子作說明。

把一個八進制的整數(shù)754轉換成十進制的整數(shù)变汪,結果是多少侠坎?

x = 754
#把八進制整數(shù)754先轉換為字符串類型,再使用int()函數(shù)裙盾。
int(str(x), 8)  
Out[55]: 492

雖然在思維上更容易接受些实胸,但是從實現(xiàn)層面上講,如果先把754前面加上0o直接表示為Python可識別的八進制整數(shù)番官,再直接使用int()函數(shù)會更不容易出錯一些庐完。個人更推薦第一種轉換方法。

小結

十進制整數(shù)number轉換為二進制徘熔、八進制门躯、十六進制的整數(shù),直接使用Python內置函數(shù)bin(number)酷师、oct(number)和hex(number)即可讶凉。

二進制、八進制山孔、十六進制整數(shù)x轉換為十進制的整數(shù)懂讯,先把它們統(tǒng)一表示為Python可識別的樣式,二進制前面加前綴0b台颠,八進制前面加前綴0o褐望,十六進制前面加0x,再直接使用int(x)即可得到所需要的十進制整數(shù)串前。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末瘫里,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子酪呻,更是在濱河造成了極大的恐慌减宣,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件玩荠,死亡現(xiàn)場離奇詭異漆腌,居然都是意外死亡,警方通過查閱死者的電腦和手機阶冈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進店門闷尿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人女坑,你說我怎么就攤上這事填具。” “怎么了?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵劳景,是天一觀的道長誉简。 經(jīng)常有香客問我,道長盟广,這世上最難降的妖魔是什么闷串? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮筋量,結果婚禮上烹吵,老公的妹妹穿的比我還像新娘。我一直安慰自己桨武,他們只是感情好肋拔,可當我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著呀酸,像睡著了一般凉蜂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上七咧,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天跃惫,我揣著相機與錄音叮叹,去河邊找鬼艾栋。 笑死,一個胖子當著我的面吹牛蛉顽,可吹牛的內容都是我干的蝗砾。 我是一名探鬼主播,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼携冤,長吁一口氣:“原來是場噩夢啊……” “哼悼粮!你這毒婦竟也來了?” 一聲冷哼從身側響起曾棕,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤扣猫,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后翘地,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體申尤,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年衙耕,在試婚紗的時候發(fā)現(xiàn)自己被綠了昧穿。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡橙喘,死狀恐怖时鸵,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情厅瞎,我是刑警寧澤饰潜,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布初坠,位于F島的核電站,受9級特大地震影響彭雾,放射性物質發(fā)生泄漏某筐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一冠跷、第九天 我趴在偏房一處隱蔽的房頂上張望南誊。 院中可真熱鬧,春花似錦蜜托、人聲如沸抄囚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽幔托。三九已至,卻和暖如春蜂挪,著一層夾襖步出監(jiān)牢的瞬間重挑,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工棠涮, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留谬哀,地道東北人。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓严肪,卻偏偏與公主長得像史煎,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子驳糯,可洞房花燭夜當晚...
    茶點故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內容