如何将输入存储为十六进制数字?

时间:2013-03-25 20:32:59

标签: python python-3.x hex

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

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

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

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

2 个答案:

答案 0 :(得分: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!")

答案 1 :(得分:0)

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

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

hexValue1 = input("Input first hex value")

然后,将其转换为相应的整数,如此

hexValue1 = int(hexValue1, 16)

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

print(hex(hexValue1))

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

例如,一个简单的程序来获取两个十六进制值输入并执行二者的XOR并返回十六进制结果将如下所示:

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

print(hex(xor))