【问题标题】:How can I store input as a hexadecimal number?如何将输入存储为十六进制数?
【发布时间】:2013-03-25 20:32:59
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: python python-3.x hex


    【解决方案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!")
    

    【讨论】:

    • input() 总是返回字符串,如果用户想要将用户十六进制输入转换为二进制 . 像 s=input('enter hex') bin(s) 。但这不起作用,因为输入返回了'0xff' 而不是0xff
    • @Rakesh:如果要将十六进制数字转换为字节,请使用binascii.unhexlify()
    【解决方案2】:

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

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

    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))
    

    【讨论】:

      猜你喜欢
      • 2014-03-19
      • 1970-01-01
      • 2013-11-11
      • 2012-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      相关资源
      最近更新 更多