在Python 3中解码十六进制的问题



早上/下午/晚上好!我现在正在制作一个程序,我遇到了一个问题。该程序应从给定文本创建QR码,并应将其颜色更改为RGB或HEX中给定的颜色。但是,当我将HEX颜色代码用于RGB"解释器" ...好吧,您可以看到此问题:输入-61C3FF和输出应该向我展示诸如r = 61到十进制(97)的东西(97),g = C3到小数(195)和b = ff到十进制(255)。但是在输出中,我只能看到r = 6,g = 12,b = 15。这是我的代码的一部分,必须识别出给出哪种颜色代码:RGB或HEX,并且必须将十六进制"转换"到RGB(例如,RGB中的{#} 9effec将为158 255 236)。

>
for i in color:
    if i == " ":
        color = color.split()
        x = color[0]
        y = color[1]
        z = color[2]
    else: # If HEX color
        if color[0] == "#": # if it starts with "#"
            color = color[1:]
            decX = color[0:1]
            decY = color[2:3]
            decZ = color[4:5]
            x = int(decX, 16)
            y = int(decY, 16)
            z = int(decZ, 16)
            print(color, x, y, z)
        else: # if it's without "#"
            decX = color[0:1]
            decY = color[2:3]
            decZ = color[4:5]
            x = int(decX, 16)
            y = int(decY, 16)
            z = int(decZ, 16)
            print(color, x, y, z)

如果您需要完整的代码-https://pastebin.com/ycgk2kwu

您的问题是由错误的切片引起的,请考虑以下示例:

color = "61c3ff"
print(color[0:1]) #6
print(color[2:3]) #c
print(color[4:5]) #f

您可以看到str的切片以[t:t+1]的形式给出长度1str,只需增加每个切片中的第二个值,它应该正常工作:

color = "61c3ff"
print(color[0:2]) #61
print(color[2:4]) #c3
print(color[4:6]) #ff

最新更新