3.4 二八�六进制整数¶

问题¶

你需�转�或者输出使用二进制,八进制或�六进制表示的整数。

解决方案¶

为了将整数转�为二进制�八进制或�六进制的文本串, �以分别使用 bin() , oct() 或 hex() 函数:

>>> x = 1234
>>> bin(x)
'0b10011010010'
>>> oct(x)
'0o2322'
>>> hex(x)
'0x4d2'
>>>

�外,如果你�想输出 0b , 0o 或者 0x 的�缀的�,�以使用 format() 函数。比如:

>>> format(x, 'b')
'10011010010'
>>> format(x, 'o')
'2322'
>>> format(x, 'x')
'4d2'
>>>

整数是有符�的,所以如果你在处�负数的�,输出结果会包�一个负�。比如:

>>> x = -1234
>>> format(x, 'b')
'-10011010010'
>>> format(x, 'x')
'-4d2'
>>>

如果你想产生一个无符�值,你需�增加一个指示最大�长度的值。比如为了显示32�的值,�以�下�这样写:

>>> x = -1234
>>> format(2**32 + x, 'b')
'11111111111111111111101100101110'
>>> format(2**32 + x, 'x')
'fffffb2e'
>>>

为了以��的进制转�整数字符串,简�的使用带有进制的 int() 函数��:

>>> int('4d2', 16)
1234
>>> int('10011010010', 2)
1234
>>>

讨论¶

大多数情况下处�二进制�八进制和�六进制整数是很简�的。 ��记�这些转�属于整数和其对应的文本表示之间的转���。永远�有一�整数类型。

最�,使用八进制的程�员有一点需�注�下。 Python指定八进制数的语法跟其他语言�有��。比如,如果你�下�这样指定八进制,会出现语法错误:

>>> import os
>>> os.chmod('script.py', 0755)
    File "<stdin>", line 1
        os.chmod('script.py', 0755)
                            ^
SyntaxError: invalid token
>>>

需确�八进制数的�缀是 0o ,就�下�这样:

>>> os.chmod('script.py', 0o755)
>>>