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

Python十六进制转RGB时出现invalid literal错误求助

问题分析与修复方案

看起来你遇到的问题不是rgbList数组的问题,而是数据导入和处理环节混入了无效字符,导致转换函数收到了非十六进制的内容。咱们来一步步理清:

错误根源定位

错误提示 invalid literal for int() with base 16: '<' 已经很明确:当调用 int(..., 16) 转换十六进制字符串时,传入的是 < 这个字符——这显然不是合法的十六进制字符(合法范围是0-9、a-f、A-F)。

问题出在你从文件导入并分割后的 hexArray 里,存在无效元素,而非 rgbList 本身。

数据处理环节的坑

你当前的代码用了 hexArray = str(pixelFile).split("."),这里有两个致命问题:

  • 如果 pixelFile 是文件对象(比如用 open() 打开的对象),直接转成字符串会得到类似 <_io.TextIOWrapper name='xxx.txt' mode='r' encoding='utf-8'> 的内容,这就包含了错误提示里的 < 字符!
  • 原数据格式是 82afe8.82afe6.82b0e4.,末尾有个多余的 .,分割后会生成一个空字符串元素,这也会导致后续转换失败。

修复步骤

1. 正确读取文件内容

不要直接把文件对象转成字符串,应该读取文件里的实际内容:

# 替换成你的文件名
with open("pixel_data.txt", "r") as pixelFile:
    content = pixelFile.read().strip()  # 读取内容并去除首尾空白字符

2. 清理分割后的数组

分割后过滤掉空字符串和非十六进制的无效元素:

hexArray = content.split(".")
# 只保留非空且全是合法十六进制字符的元素
valid_hex_array = [item for item in hexArray if item and all(c in "0123456789abcdefABCDEF" for c in item)]

3. 安全执行转换

用清理后的数组来执行转换,同时可以预先初始化 rgbList 避免索引问题:

rgbList = []
for hex_str in valid_hex_array:
    rgbList.append(hex_to_rgb(hex_str))

验证转换函数

你的 hex_to_rgb 函数逻辑是没问题的,比如测试有效输入:

print(hex_to_rgb("82afe8"))  # 输出 (130, 175, 232)

内容的提问来源于stack exchange,提问作者Leo Gaunt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 23:32:34