python3之数字(在实际应用中的数字--十六进制、八进制和二进制记数)

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
>>> X
72057594037927935
>>> oct(X)
'0o3777777777777777777'
>>> bin(X)
'0b11111111111111111111111111111111111111111111111111111111'
>>>
    原文作者:fhd001
    原文地址: https://blog.csdn.net/fhd001/article/details/6997982
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞