Py学习  »  Python

python系列教程62

人工智能AI技术 • 3 年前 • 302 次点击  
阅读 3

python系列教程62

朋友们,如需转载请标明出处:blog.csdn.net/jiangjunsho…

声明:在人工智能技术教学期间,不少学生向我提一些python相关的问题,所以为了让同学们掌握更多扩展知识更好地理解AI技术,我让助理负责分享这套python系列教程,希望能帮到大家!由于这套python教程不是由我所写,所以不如我的AI技术教学风趣幽默,学起来比较枯燥;但它的知识点还是讲到位的了,也值得阅读!PS:看不懂本篇文章的同学请先看前面的文章,循序渐进每天学一点就不会觉得难了!

正如之前文章中提到的那样,Python整数能够以十六进制、八进制和二进制记数法来编写。下面让我们来看一些实际的例子。

>>> 0o1,0o20,0o377          # Octal literals

(1,16,255)

>>> 0x01,0x10,0xFF          # Hex literals

(1,16,255)

>>> 0b1,0b10000,0b11111111  # Binary literals

(1,16,255)
复制代码

上面的八进制值0o377、十六进制值0xFF和二进制值0b11111111,都表示十进制的255。Python默认地用十进制值(以10为基数)显示,但它提供了内置的函数,允许我们把整数转换为其他进制的数字字符串:

>>> oct(64),hex(64),bin(64)

('0100','0x40','0b1000000')
复制代码

oct函数会将十进制数转换为八进制数,hex函数会将十进制转换为十六进制数,而bin会将十进制数转换为二进制。另一个内置的int函数会将一个数字的字符串变换为一个整数,并可以通过它的第二个参数来确定数字的进制:

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

(64,64,64,64)

>>> int('0x40',16),int('0b1000000',2)  # Literals okay too

(64,64)
复制代码

你还可以使用字符串格式化方法调用和表达式将一个整数转换成八进制数和十六进制数的字符串:

>>> '{0:o},{1:x},{2:b}'.format(64,64,64)

'100,40,1000000'



>>> '%o,%x,%X' % (64,255,255)

'100,ff,FF'
复制代码

Python 2.6在编写八进制时,可以直接用一个0开头:

>>> 0o1,0o20,0o377  # New octal format in 2.6 (same as 3.0)

(1,16,255)

>>> 01,020,0377     # Old octal literals in 2.6 (and earlier)

(1,16,255)
复制代码

但是在Python 3.0中,上面例子中的第二组的语法将会产生错误。即便它在Python 2.6中不是一个错误,还是要小心,不要用0开始一个数字字符串,除非你真的是想要表示一个八进制的值。为了解决这一容易混淆的写法,Python 3.0修改了八进制的形式,在Python 3.0中必须使用0o,例如0o377,所以,在Python 2.6中,也应该尽可能使用0o。

最后再给大家一些例子。下面的代码创建了十六进制形式的一个整数,然后先用十进制形式显示它,再将其转换为八进制和二进制的形式:

>>> X = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF

>>> X

5192296858534827628530496329220095L

>>> oct(X)

'017777777777777777777777777777777777777L'

>>> bin(X)

'0b1111111111111111111111111111111111111111111111111111111111 ...and so on...
复制代码
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/111321
 
302 次点击