You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将十六进制颜色数组转换为RGB像素值时遇类型错误求助

解决十六进制颜色字符串转RGB像素值的报错问题

看来你是搞反了处理逻辑,还对字符串的解析方式有误,才触发了这个TypeError。我来帮你理清问题并给出靠谱的解决方案:

错误原因拆解

你手里的colors数组全是十六进制颜色字符串(比如#32CD32),但你写的代码['#%02x%02x%02x' % (c[0], c[1], c[2]) for c in colors]是在做「将RGB整数元组转成十六进制字符串」的操作——而且还写错了:遍历colors时每个c是字符串,c[0]是#,c[1]是3这类单个字符,根本不是整数,自然会触发%x format: an integer is required, not str的错误。

正确解决方案(十六进制转RGB像素值)

你的核心需求是把现有的十六进制颜色数组转换成RGB整数像素值(比如#32CD32 → (50, 205, 50)),可以这样实现:

方法1:基础循环解析(直观易懂)

import numpy as np

colors = np.array(['#32CD32', '#CD5C5C', '#00BFFF', '#1E90FF', '#00008B', '#ADFF2F', '#B0E0E6', '#7CFC00', '#00008B', '#1E90FF', '#F08080', '#F08080', '#FA8072', '#0000FF', '#7CFC00', '#B0E0E6'], dtype='<U7')

rgb_pixels = []
for color in colors:
    # 去掉开头的#号,提取纯十六进制部分
    hex_part = color.strip('#')
    # 按每两位分割,转成十进制整数
    r = int(hex_part[0:2], 16)
    g = int(hex_part[2:4], 16)
    b = int(hex_part[4:6], 16)
    rgb_pixels.append((r, g, b))

print(rgb_pixels)

方法2:简洁的列表推导式(适配numpy数组)

利用numpy的字符串方法批量处理,一行就能搞定:

rgb_pixels = [tuple(int(hex_str[i:i+2], 16) for i in (0, 2, 4)) for hex_str in colors.str.strip('#')]

如果你的需求其实是反过来(RGB整数转十六进制字符串),那需要确保colors是RGB整数元组的数组,比如[(50,205,50), ...],这时调整原代码就能用:

# 示例:RGB整数转十六进制
rgb_values = [(50, 205, 50), (205, 92, 92)]
hex_colors = ['#%02x%02x%02x' % rgb for rgb in rgb_values]

内容的提问来源于stack exchange,提问作者eric lardon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:11:11