我在python 2.7中遇到了hex()问题
我想用用户输入将“ 0777”转换为十六进制。
但是在用户输入中使用整数存在问题。

In [1]: hex(0777)
Out[1]: '0x1ff'

In [2]: hex(777)
Out[2]: '0x309'

In [3]: z = raw_input('enter:')
enter:0777

In [4]: z
Out[4]: '0777'

In [5]: hex(z)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-5-3682d79209b9> in <module>()
----> 1 hex(z)


TypeError: hex() argument can't be converted to hex

In [6]: hex(int(z))
Out[6]: '0x309'

In [7]:


我需要0x1ff,但显示0x309,我该如何解决?

最佳答案

int类的基本参数默认为10

int(x, base=10) -> integer


前导零将被剥离。请参阅以下示例:

In [1]: int('0777')
Out[1]: 777


明确指定以8为底,然后hex函数将为您提供所需的结果:

In [2]: hex(int('0777', 8))
Out[2]: '0x1ff'

关于python - 如何在python中使用hex()?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30286256/

10-12 21:20