Python十六进制到int转换错误

ila*_*pad 1 python int hex

>>> print(int(0x51))
Run Code Online (Sandbox Code Playgroud)

81

这是对的.

>>> str = 51
>>> cmd = "0x%s" %(str)
>>> print(int(cmd))
Run Code Online (Sandbox Code Playgroud)

但为什么这不对?我得到ValueError:基数为10的int()的无效文字:'0x51'

Mar*_*ers 6

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

>>> 0x51
81
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅Integer和long integer literals文档 ; 这是hexinteger表格.调用int()该整数对象只会再次返回相同的整数值.

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

>>> int('0x51', 0)
81
Run Code Online (Sandbox Code Playgroud)

0这是一个特例; 它告诉int()我寻找Python整数文字前缀,0x以便从中确定真正的基础.从int()文件:

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