如何在没有前缀“0x”的情况下将小数转换为十六进制

时间:2016-09-16 06:22:32

标签: python python-2.7 hex

def tohex(r, g, b):
    #your code here :)
    def hex1(decimal):
        if decimal < 0:
            return '00'
        elif decimal > 255:
            return 'FF'
        elif decimal < 17:
            return  '0'+ hex(decimal)[2:]
        else:
            return inthex(decimal)[2:]
    return (hex1(r) + hex1(g) + hex1(b)).upper()
print rgb(16 ,159 ,-137)

我定义了一个新方法来获取我的十六进制数。但是当谈到(16,159,-137)时,我得到了0109F00而不是019F00。为什么还有一个额外的0?

1 个答案:

答案 0 :(得分:4)

你有一个额外的零,因为该行应该是elif decimal < 16而不是17

使用格式字符串 1

def rgb(r,g,b):
    def hex1(d):
        return '{:02X}'.format(0 if d < 0 else 255 if d > 255 else d)
    return hex1(r)+hex1(g)+hex1(b)

print rgb(16,159,-137)

输出:

109F00

1 https://docs.python.org/2.7/library/string.html#format-specification-mini-language