我有一个简单的任务,我要求用户输入16位十六进制数,但如果用户输入一个十进制数,我想为它们转换它。 如果它不是16位HEX,我会编写代码来重新询问输入,但是我想添加从Decimal到HEX的转换,然后验证它是16位HEX数。
我想我只需要朝正确的方向推进转换。
谢谢大家!
答案 0 :(得分:3)
您可以使用内置的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
答案 1 :(得分: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