【问题标题】:Issue with decoding hex to decimal in python 3在 python 3 中将十六进制解码为十进制的问题
【发布时间】:2019-07-15 12:17:32
【问题描述】:

早上好/下午/晚上好! 我现在正在制作一个程序,但遇到了一个问题。该程序应从给定文本创建 QR 码,并将其颜色更改为 RGB 或 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】:

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

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

【讨论】:

    猜你喜欢
    • 2016-04-17
    • 2014-01-15
    • 2020-06-15
    • 1970-01-01
    • 2018-07-24
    • 2010-12-15
    • 2011-08-13
    • 2015-12-23
    • 2011-03-18
    相关资源
    最近更新 更多