python3之數字(在實際應用中的數字–十六進位、八進位和二進位記數)

來源:互聯網
上載者:User

python3之數字(在實際應用中的數字--十六進位、八進位和二進位記數)
----------

python整數能夠以十六進位、八進位和二進位記數法來編寫,作為一般的十進位記數法的補充。如例:

>>>0o1,0o20,0o377   #八進位(1,16,255)>>>0x01,0x10,0xFF   #十六進位(1,16,255)>>>0b1,0b10000,0b11111111  #二進位(1, 16, 255)

python預設地用十進位值顯示,但它提供了內建的函數,允許我們把整數轉換為其他進位的數字字串:

>>> oct(64),hex(64),bin(64)('0o100', '0x40', '0b1000000')

oct函數會將十進位數轉換為八位元,hex函數會將十進位轉換為十六進位數,而bin函數會將十進位數轉換為二進位。另一種方式,內建int函數會將一個數位字串轉換為一個整數,並可以通過定義的第二個參數來確定第一個數字字串參數的進位。

>>>int('64'),int('100',8),int('40',16),int('1000000',2)(64, 64, 64, 64)

在繼續學習之前,有兩點需要注意。首先,python2.6的使用者應該記住在編寫八進位之前,直接用一個0開頭,python中最初的八進位格式如下:

>>>0o1,0o20,0o377   #python2.6與python3.0中都可用(1, 16, 255)>>>01,020,0377      #只用於python2.6中(1, 16, 255)

在python3.0中,上例中的第二組文法將會產生錯誤。即便它在python2.6中不是一個錯誤,還是要小心,不要用0開始一個數字字串,除非你真的是想要表示一個八進位的值。python2.6會將其當作是八位元,但可能不像你所期待的那樣工作,010在python2.6中總是八位元,而不是十進位數。也就是說,為了保持與十六進位和二進位的形式對稱,python3.0修改了八進位的形式,在python3.0中必須使用0o010,並且,在python2.6中,也應該儘可能使用0o010
其次,注意這些常量可以產生任意長度的整數。例如,下面的例子建立了十六進位形式的一個整數,然後先用十進位形式顯示它,再將其轉換為八進位和二進位的形式:

>>> X=0xFFFFFFFFFFFFFF>>> X72057594037927935>>> oct(X)'0o3777777777777777777'>>> bin(X)'0b11111111111111111111111111111111111111111111111111111111'>>>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.