如何将输入存储为十六进制数字?
我正在开发一个Python应用程序,可以把十进制数字转换成十六进制数字,然后再反过来做。我在存储用户输入的十六进制数字时遇到了一些麻烦。这对我的程序很重要,因为我需要询问用户想把哪个数字转换回十进制。我需要把它存储为一种不同于字符串或整数的数据类型,但仍然需要一个提示。
到目前为止,我尝试了这个方法:
num = int(hex(input("Which Hexadecimal number would you like to convert to decimal/denary? \n")))
但是它仍然把十六进制数字当成了字符串。
2 个回答
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))
2
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!")