【问题标题】:Python hex to int conversion errorPython hex 到 int 的转换错误
【发布时间】:2015-11-18 11:26:30
【问题描述】:
>>> print(int(0x51))

81

这是正确的。

>>> str = 51
>>> cmd = "0x%s" %(str)
>>> print(int(cmd))

但是为什么这是不正确的呢? 我得到 ValueError: invalid literal for int() with base 10: '0x51'

【问题讨论】:

  • 0x51 已经是一个整数(以十六进制表示),51 也是,但有不同的值。

标签: python int hex


【解决方案1】:

0x51 是一个 Python 整数文字,它本身已经产生一个整数:

>>> 0x51
81

详情请见Integer and long integer literals documentation;这是hexinteger 表格。在该整数对象上调用 int() 只会再次返回相同的整数值。

可以在前缀为0x 的字符串上使用int(),但您需要告诉它使用0 作为基础:

>>> int('0x51', 0)
81

0 是这里的特例;它告诉int() 查找Python 整数文字前缀,例如0x,以从中确定真正的基数。来自int() documenation

Base 0 表示将字符串完全解释为整数文字,因此实际的基数是 2、8、10 或 16。

【讨论】:

    猜你喜欢
    • 2021-12-25
    • 2013-08-07
    • 2015-11-06
    • 2011-06-02
    • 1970-01-01
    • 1970-01-01
    • 2016-08-09
    • 2014-04-17
    • 1970-01-01
    相关资源
    最近更新 更多