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

59 阅读1分钟

问题描述

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

测试样例

样例1:

输入:rgb = "rgb(192, 192, 192)" 输出:12632256

样例2:

输入:rgb = "rgb(100, 0, 252)" 输出:6553852

样例3:

输入:rgb = "rgb(33, 44, 55)" 输出:2174007

样例4:

输入:rgb = "rgb(255, 255, 255)" 输出:16777215

样例5:

输入:rgb = "rgb(0, 0, 0)" 输出:0

解题思路

这道题我一开始看到也是丈二和尚摸不着头脑,问了下MarsCode才恍然大悟

image.png 原来就是就是这三个颜色的(R、G、B每个颜色分量都是8位无符号二进制数)二进制位拼起来,即红色分量左移16位,绿色分量左移8位,剩下8位留给蓝色分量,这样得到的24位二进制数所表示的整数即为所求。如下图所示:

红色分量(8)|绿色分量(8)|蓝色分量(8)

完整代码如下:

def solution(rgb):
    rgb_values = rgb[4:-1].split(', ')
    r = int(rgb_values[0])  # 红色分量
    g = int(rgb_values[1])  # 绿色分量
    b = int(rgb_values[2])  # 蓝色分量
 
    # 计算十六进制整数值
    hex_value = (r << 16) + (g << 8) + b
    return hex_value