>>> print(int(0x51))
81年正确。
>>> str = 51
>>> cmd = "0x%s" %(str)
>>> print(int(cmd))
但为什么这是不正确的?我得到ValueError: int()的无效literal with base 10: '0x51'
0x51
是一个Python整数字面值,它本身已经产生一个整数:
>>> 0x51
81
请参阅整型和长整型文字文档了解详细信息;这是hexinteger
的形式。在该整数对象上调用int()
只是再次返回相同的整数值。
您可以在前缀为0x
的字符串上使用int()
,但您需要告诉它使用0
作为基础:
>>> int('0x51', 0)
81
0
是一个特例;它告诉int()
查找Python整数字面值前缀,例如0x
,以从中确定实际基数。来自int()
文档:
基数0表示将字符串精确地解释为整数字面值,因此实际的基数是2、8、10或16。