>>> 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'
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.