Python将十进制转换为十六进制

56 投票
25 回答
296287 浏览
提问于 2025-04-16 16:28

我这里有一个函数,它可以把十进制数转换成十六进制数,但输出的结果是反着的。我该怎么修正它呢?

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 )

25 个回答

48

这不是你问的具体内容,但你可以在Python中使用“hex”这个函数:

>>> hex(15)
'0xf'
107

这个怎么样:

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

举个例子:

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

通过在split()的结果中使用-1,即使split返回的列表只有一个元素,这样也能正常工作。

26

如果你想自己写代码,而不是使用内置的函数 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"),

撰写回答