0

我有一个简单的任务,我要求用户输入一个 16 位十六进制数字,但如果用户输入一个十进制数字,我想为他们转换它。如果输入不是 16 位十六进制,我编写了代码以重新询问输入,但我想添加从十进制到十六进制的转换,然后验证它是否是 16 位十六进制数字。

我想我只需要在正确的方向上推动转换。

谢谢大家!

4

2 回答 2

4

您可以只使用hex()内置:

In [23]: hex(187)
Out[23]: '0xbb'

In [24]: hex(123456789)
Out[24]: '0x75bcd15'

In [25]: len(hex(123456789)[2:])
Out[25]: 7

In [26]: len(hex(123456789)) - 2
Out[26]: 7

它返回一个前缀为 的字符串0x,因此您需要切掉前两个字符或检查长度是否为 16 + 2。

此外,如果您的用户输入还不是整数,则需要对其进行转换。以下是我如何写整个事情:

def your_function(dec, length=16):
    try:
        # Converts the string into an integer
        # If dec is already an integer, it won't throw any errors
        n = int(dec)

        return len(hex(n)[:2]) == length
    except ValueError:
        # int(dec) raised the error. It's not a number.
        return False
于 2013-06-13T21:39:20.427 回答
1

使用hex()内置:

def check_hex_length(decimal_number):
  hex_number = hex(decimal_number) # hex_number now contains your number as hex.
  return (len(hex_number) - 2) == 16
于 2013-06-13T21:39:14.360 回答