RGB色值转换为整数值 | 豆包MarsCode AI刷题

45 阅读2分钟

问题描述

小M需要一个函数,用于将RGB颜色值转换为相应的十六进制整数值。RGB色值以字符串的形式给出,如"rgb(192, 192, 192)",需要转换为对应的整数值。

解题思路

理解问题: 输入是一个RGB颜色值的字符串,格式为"rgb(r, g, b)",其中r、g、b是0到255之间的整数。 输出是将RGB值转换为对应的十六进制整数值。 数据结构选择: 使用字符串操作来提取RGB值。 使用整数操作来处理RGB值。 使用字符串格式化来生成十六进制字符串。 算法步骤: 从输入字符串中提取RGB值。 将提取的RGB值转换为整数。 将每个颜色分量转换为两位的十六进制字符串。 拼接十六进制字符串并转换为整数。

图解

输入: "rgb(192, 192, 192)"

  1. 提取RGB值:
    • 去掉"rgb("和")",得到"192, 192, 192"
    • 按逗号和空格分割,得到["192", "192", "192"]
  2. 转换为整数:
    • r = 192
    • g = 192
    • b = 192
  3. 转换为十六进制字符串:
    • hex_r = "C0"
    • hex_g = "C0"
    • hex_b = "C0"
  4. 拼接并转换为整数:
    • hex_value = "C0C0C0"
    • 结果 = 12632256

知识总结

字符串操作: str[start:end]:切片操作,用于提取子字符串。 str.split(separator):按指定分隔符分割字符串。 整数操作: int(str):将字符串转换为整数。 f"{value:02X}":格式化字符串,将整数转换为两位的十六进制字符串。 十六进制转换: int(hex_str, 16):将十六进制字符串转换为整数。

代码实现

# 1. 从字符串中提取RGB值
rgb_values = rgb[4:-1].split(', ') # 去掉"rgb("和")",然后按逗号和空格分割

# 2. 将RGB值转换为整数
r = int(rgb_values[0])
g = int(rgb_values[1])
b = int(rgb_values[2])

# 3. 将每个颜色分量转换为两位的十六进制字符串
hex_r = f"{r:02X}"
hex_g = f"{g:02X}"
hex_b = f"{b:02X}"

# 4. 拼接十六进制字符串并转换为整数
hex_value = hex_r + hex_g + hex_b
return int(hex_value, 16)

if __name__ == "__main__":
# 你可以添加更多测试用例
print(solution("rgb(192, 192, 192)") == 12632256)
print(solution("rgb(100, 0, 252)") == 6553852)
print(solution("rgb(33, 44, 55)") == 2174007)