在python中从十进制转换为十六进制

在python中从十进制转换为十六进制,python,Python,我有一个简单的任务,我请求用户输入一个16位的十六进制数,但是如果用户输入一个十进制数,我想把它转换成它们。 我编写了代码来重新请求输入,如果它不是16位十六进制,但我想添加从十进制到十六进制的转换,然后验证它是一个16位十六进制数 我想我只是需要朝着正确的方向推动一下转换 谢谢大家 使用内置的hex() def check_hex_length(decimal_number): hex_number = hex(decimal_number) # hex_number now contai

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

我想我只是需要朝着正确的方向推动一下转换

谢谢大家

使用内置的
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
使用内置的
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
您只需使用内置的:

它返回一个前缀为
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
您只需使用内置的:

它返回一个前缀为
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


由于
decimal\u number
是某个输入函数中的字符串,您需要在这里再做一步。不,您在调用该函数时更改了类型,MateI不知道您的确切意思,但使用字符串用户输入调用函数将引发
TypeError:“str”对象不能解释为整数
(或者在早期的Python中,使用稍微不同的措词)因此,如果您建议他首先
尝试调用
int
,然后只有成功调用
check\u hex\u length
,那么您将其称为
check\u hex\u length(int(yourNumber))
,这样他才能区分这两个问题(不是十进制数,vs.是十进制数,但不转换为十六进制的16位数字),这似乎是合理的。但你应该在回答中这样说。函数的名称和OP问题的措辞都让你听起来像是在使用十进制字符串,而不是整数。因为
decimal\u number
是来自某个输入函数的字符串,你需要在这里多做一步。不,你在调用函数时会更改类型,Matei不知道您的确切意思,但使用字符串用户输入调用函数会引发
TypeError:“str”对象不能解释为整数(或者在早期Python中使用稍微不同的措词)。因此您将其称为
check_hex_length(int(yourNumber))
如果你建议他首先
尝试调用
int
,然后只有成功调用
后,才检查\u hex\u length
,这样他才能区分这两个问题(不是十进制数,而不是十进制数,但不会转换为十六进制数),这似乎是合理的。但你应该在答案中这样说。函数的名称和OP问题的措辞都让人觉得你是在使用十进制字符串,而不是整数。如果十六进制结果有前导零,你将永远无法知道它是16位。@MarkRansom:大概他想拒绝使用十进制字符串要求前导0占据所有16位数字。如果不是,则只需检查
如果没有一位数字大于9,如何区分十进制和十六进制输入之间的差异?能否给出一些示例输入及其类型?是否只需要十六进制数的字符串表示作为输出?如果十六进制结果具有lea“定零你永远不可能知道它是16位的。@Markransem:大概他想拒绝要求前导0占据全部16位的小数。如果不是,那只是检查
的问题,如果没有一个数字大于9,你怎么能区分十进制和十六进制输入之间的差异?你能举个例子吗?”输入及其类型?是否只需要十六进制数的字符串表示作为输出?
decimal
是stdlib类的名称(这就是为什么它如此蓝的原因),因此作为参数的名称可能会有点混淆。@abarnert:我真的想不出更好的名称了。有什么建议吗?可能更长一些,比如
decimal\u numeric
decimal\u string
?有点难看和冗长,但很清楚。(在我自己的代码中,我几乎不用思考就可以使用<代码> DEC <代码>,然后在半夜醒来,在噩梦中,符号<代码> DEC/<代码>与十六进制数字<代码> DEC < /代码>……<代码>十进制< /代码>是STDLIB类的名称(这就是为什么它如此蓝化)。,因此作为参数的名称可能会有点混淆。@abarnert:我真的想不出更好的名称了。有什么建议吗?可能更长一些,比如
decimal\u numeric
decimal\u string
?有点难看和冗长,但很清楚。(在我自己的代码中,我几乎不用肯定地使用<代码> DEC <代码>,然后在半夜醒来,伴随着噩梦,符号<代码> DEC/<代码>与十六进制数字<代码> DEC < /代码>……