0

我一直在开发一个 python 应用程序,它可以将十进制数转换为十六进制数,然后反过来。我无法将用户输入存储为十六进制数字。这对于我的程序的运行非常重要,因为我需要询问他们想将哪个数字转换回十进制数字。我只需要将其存储为字符串或整数以外的其他数据类型,但仍需要提示。

到目前为止,我已经尝试过这种方法:

num = int(hex(input("Which Hexadecimal number would you like to convert to decimal/denary?  \n")))

但它仍然认为十六进制数实际上是一个字符串。

4

2 回答 2

1

hex()将整数转换为十六进制表示形式,即字符串。input()而是返回一个字符串值。

您只想存储用户直接输入的值:

num = input("Which Hexadecimal number would you like to convert to decimal/denary?  \n"))

然后,您可以通过尝试将其转换为十进制来验证它是否为十六进制数int()

try:
    decimal = int(num, 16)  # interpret the input as a base-16 number, a hexadecimal.
except ValueError:
    print("You did not enter a hexadecimal number!")
于 2013-03-25T20:36:28.837 回答
0

这是提示输入十六进制时我使用的方法。

首先,只需接受它作为常规输入

hexValue1 = input("Input first hex value")

然后,像这样将其转换为相应的整数

hexValue1 = int(hexValue1, 16)

现在您可以使用相应的整数执行您想要的任何数学函数,如果您希望将结果作为十六进制值返回,请务必按此返回

print(hex(hexValue1))

或者您想要返回值的任何其他方式。它将返回典型的 0xaa11 格式的字符串。因此,您可能需要进一步转换它以使用它。

例如,一个简单的程序采用两个十六进制值输入并对两者进行异或并返回十六进制结果如下所示:

hex1 = input("Hex 1 ")
hex1 = int(hex1, 16)
hex2 = input("Hex 2 ")
hex2 = int(hex2, 16)
xor = hex1 ^ hex2

print(hex(xor))
于 2017-04-12T23:19:28.033 回答