十六进制、八进制和二进制:字面量与转换

Python的整数能够以十六进制、八进制和二进制计数法来编写,这作为我们迄今为止一种使用的常见的以10为底的十进制记数法的补充。对于十进制生物而言,其他这三种进制第一眼看起来充满异域风情,但是一些程序员会认为他们在描述一些数值时十分方便,尤其是他们能很容易地对应到字节和位。之前简述过编码规则,这里看一些实际的例子。

记住,下面这些字面量只是指定一个整数对象的值的一种替代方式。例如,在Python3.X和Python2.X中编写的如下字面量会产生具有上述3中机制底数的常规整数。在内存中,同一个整数的值是相同的,它与我们未来指定它而使用的底数无关。

这里,八进制的0o377,十六进制的0xFF和二进制的0b11111111,都表示十进制的255。例如,十六进制数值中的F数字表示十进制的15和二级的4位1111,且反映了以16为幂。因此,十六进制数值0xFF和其他数值能像下面这样转换为十进制数值

Python默认使用十进制显示整数数值,但它提供了内置函数,能帮我们把整数转换为其他进制的字符串。

oct函数会将会十进制转换为八进制数,hex函数会将十进制数转换为十六进制数,而bin函数会将十进制数转换为二进制。反过来,内置函数int会将一个数字的字符串转换为一个整数,并能够通过可选的第二位参数确定转换后数字的进制。这对于从文件中作为字符串读取的数字来说十分有用。

eval函数,将会把字符串作为Python代码来运行、因此,它也具有类似的效果,但往往运行的更慢。它实际上会把字符串作为程序的一个片段编译并运行,并且它假设当前运行的字符串术语一个可行的来源。耍小聪明的用户也许会提交一个删除你机器上文件的字符串,因此小心使用eval调用:

最后,你也可以使用字符串格式化方法调用和表达式(它只返回数字,而不是Python字面量字符串),将整数转换为指定底的字符串:

与之类似的有%,不过现在不推荐使用了

你可能感兴趣的:(十六进制、八进制和二进制:字面量与转换)