Python 十进制转十六进制

新手上路,请多包涵

我这里有一个将十进制转换为十六进制的函数,但它以相反的顺序打印它。我将如何解决它?

 def ChangeHex(n):
    if (n < 0):
        print(0)
    elif (n<=1):
        print(n)
    else:
        x =(n%16)
        if (x < 10):
            print(x),
        if (x == 10):
            print("A"),
        if (x == 11):
            print("B"),
        if (x == 12):
            print("C"),
        if (x == 13):
            print("D"),
        if (x == 14):
            print("E"),
        if (x == 15):
            print ("F"),
        ChangeHex( n / 16 )

原文由 Eric 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 841
2 个回答

如果您想自己编写代码而不是使用内置函数 hex() ,您可以在打印当前数字之前简单地进行递归调用:

 def ChangeHex(n):
    if (n < 0):
        print(0)
    elif (n<=1):
        print n,
    else:
        ChangeHex( n / 16 )
        x =(n%16)
        if (x < 10):
            print(x),
        if (x == 10):
            print("A"),
        if (x == 11):
            print("B"),
        if (x == 12):
            print("C"),
        if (x == 13):
            print("D"),
        if (x == 14):
            print("E"),
        if (x == 15):
            print ("F"),

原文由 Sven Marnach 发布,翻译遵循 CC BY-SA 3.0 许可协议

那这个呢:

 hex(dec).split('x')[-1]

例子:

 >>> d = 30
>>> hex(d).split('x')[-1]
'1e'

通过在 split() 的结果中使用 -1,即使 split 返回一个包含 1 个元素的列表,这也会起作用。

原文由 Rich 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题