在python 3中将十六进制解码为十进制的问题

问题描述 投票:1回答:1

早上好/下午/晚上好!我正在制作一个程序,我遇到了一个问题。此程序应从给定文本创建QR代码,并应将其颜色更改为RGB或HEX中的给定颜色。但是,当我把HEX颜色代码变成RGB“解释器”......好吧,你可以看到这个问题:输入 - 61c3ff和输出应该显示类似R = 61 TO decimal(97),G = c3 TO decimal( 195)和B = ff到十进制(255)。但在输出中我只能看到R = 6,G = 12,B = 15.这到底是什么?这是我的代码的一部分,它必须识别给出哪一个颜色代码:RGB或HEX并且必须将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

python python-3.x
1个回答
6
投票

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

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

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

color = "61c3ff"
print(color[0:2]) #61
print(color[2:4]) #c3
print(color[4:6]) #ff
© www.soinside.com 2019 - 2024. All rights reserved.