我在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,我该如何解决?

===============>>#1 票数:4 已采纳

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'

===============>>#2 票数:0

您可以使用input()而不是raw_input()来评估输入和读取八进制值。

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

In [4]: z
Out[4]: 511

In [5]: hex(z)'
Out[5]: '0x1ff'

  ask by user3671325 translate from so

未解决问题?本站智能推荐: