Python十六进制到整型转换错误


>>> 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。

最新更新