为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

潇湘沐 2021-03-28 16:42:53
我有一个简单的任务,我要求用户输入16位十六进制数字,但是如果用户输入一个十进制数字,我想将其转换为十进制数字。如果不是16位十六进制,我编写了代码以重新询问输入,但是我想添加从十进制到十六进制的转换,然后验证它是16位十六进制数字。我想我只需要在正确的方向进行转换即可。
查看完整描述

2 回答

?
饮歌长啸

TA贡献1951条经验 获得超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


查看完整回答
反对 回复 2021-04-01
?
湖上湖

TA贡献2003条经验 获得超2个赞

使用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


查看完整回答
反对 回复 2021-04-01
  • 2 回答
  • 0 关注
  • 376 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号