標籤:int python bin 進位轉換 hex
0.說明
9個月沒有寫過Python了,這9個月都在華為的ICT知識海洋裡遨遊,前段時間剛剛通過了HCIE的認證,想著還是喜歡Python和Linux多些,所以又回來了,後面會有越來越多的Python乾貨分享給大家,比如後面會打算寫一個完整的Linux主機監控項目的教程給初入門的朋友,相信這會是非常不錯的體驗。
那段時間,曾經有些時候,我需要對各種進位進行轉換,因為雖然那會不寫Python了,但是還是用Python內建的解譯器用來做簡單的數學計算,很方便。
在網上找,看有沒有方法可以實現各種進位的轉換,然後找到的結果都是各網友自己實現的各種一堆的演算法,還好當初沒有看呢,其實Python的內建函數就可以完美地實現各種進位之間的轉換了,非常實用,覺得學電腦專業的一定要會這些轉換。
當然,主要是討論二進位、八進位、十進位、十六進位之間的轉換。
1.十進位數轉換為其它進位數
(1)十進位數轉換為位元
通過內建函數bin實現,舉例如下:
>>> bin(10)‘0b1010‘>>> bin(255)‘0b11111111‘>>> bin(65535)‘0b1111111111111111‘
(2)十進位數轉換為八位元
通過內建函數oct實現,舉例如下:
>>> oct(10)‘0o12‘>>> oct(255)‘0o377‘>>> oct(65535)‘0o177777‘
(3)十進位數轉換為十六進位數
通過內建函數hex實現,舉例如下:
>>> hex(10)‘0xa‘>>> hex(255)‘0xff‘>>> hex(65535)‘0xffff‘
2.其它進位數轉換為十進位數
將位元、八位元和十六進位數轉換為十進位數,都是通過內建函數int實現,只是不同的是int所接收的第二個參數不同,可以通過help(int)查看其所接收的參數說明:
>>> help(int)Help on class int in module builtins:class int(object) | int(x=0) -> integer | int(x, base=10) -> integer | | Convert a number or string to an integer, or return 0 if no arguments | are given. If x is a number, return x.__int__(). For floating point | numbers, this truncates towards zero. | | If x is not a number or if base is given, then x must be a string, | bytes, or bytearray instance representing an integer literal in the | given base. The literal can be preceded by ‘+‘ or ‘-‘ and be surrounded | by whitespace. The base defaults to 10. Valid bases are 0 and 2-36. | Base 0 means to interpret the base from the string as an integer literal. | >>> int(‘0b100‘, base=0) | 4
也就是所,int函數中還有個預設參數base,其值預設為10,表示轉換為十進位數,如果為2,則表示轉換為位元,不過需要注意的是,如果需要顯示指定base參數,那麼第一個參數的資料類型必須為字串,可以看下面的例子:
>>> int(1010,2)Traceback (most recent call last): File "<stdin>", line 1, in <module>TypeError: int() can‘t convert non-string with explicit base
(1)位元轉換為十進位數
舉例如下:
>>> int(‘1010‘,2)10>>> int(‘11111111‘,2)255>>> int(‘1111111111111111‘,2)65535
(2)八位元轉換為十進位數
舉例如下:
>>> int(‘12‘,8)10>>> int(‘377‘,8)255>>> int(‘177777‘,8)65535
(3)十六進位數轉換為十進位數
舉例如下:
>>> int(‘a‘,16)10>>> int(‘ff‘,16)255>>> int(‘ffff‘,16)65535
3.各種進位數之間的相互轉換
上面給的情況都是十進位數與各種進位之間的相互轉換,其實二進位轉八進位或者二進位轉十六進位也是可以的,只是還是需要通過十進位作為橋樑來進行轉換,下面舉幾個例子。
(1)位元轉換為八位元
比如需要將位元0b1010轉換為八位元。
先轉換為十進位數:
>>> int(‘1010‘,2)10
再轉換為八位元:
>>> oct(10)‘0o12‘
或者一步到位:
>>> oct(int(‘1010‘,2))‘0o12‘
(2)八位元轉換為十六進位數
比如需要將八位元0o377轉換為十六進位數。
先轉換為十進位數:
>>> int(‘377‘,8)255
再轉換為十六進位數:
>>> hex(255)‘0xff‘
或者一步到位:
>>> hex(int(‘377‘,8))‘0xff‘
當然,如果需要八進位轉二進位或者其它情況的,也是同樣的思路,整個過程的思路都是非常清晰和簡潔的。
4.有什麼用
僅僅是用作計算的話用處也已經很大了,當然,在以後的項目開發中也完全有可能會用到的。
本文出自 “香飄葉子” 部落格,請務必保留此出處http://xpleaf.blog.51cto.com/9315560/1890242
用Python內建函數輕鬆實現各種進位數之間的轉換