将RGB转换为HEX失败

时间:2013-04-11 14:30:35

标签: javascript hex rgb

关注this问题及其他许多问题,我正在尝试将rgb值转换为十六进制值。

复制/粘贴最常用和最常用的答案,我已经制作了这个脚本

function componentToHex(c) {
            var hex = c.toString(16);
            return hex.length == 1 ? "0" + hex : hex;
        }

function rgbToHex(rgb) {

            var colors = rgb.split("(")
            colors = colors[1].split(")")
            colors = colors[0].split(",")

            var r = 255 - parseInt(colors[0])
            var g = 255 - parseInt(colors[1])
            var b = 255 - parseInt(colors[2])

            return componentToHex(r) + componentToHex(g) + componentToHex(b);
        }

alert(rgbToHex("rgb(0, 51, 255)"))

结果:

ffcc00

预期结果:

0033ff

为什么不起作用?

2 个答案:

答案 0 :(得分:3)

直接使用parseInt结果,而不是255减去值:

var r = parseInt(colors[0])
var g = parseInt(colors[1])
var b = parseInt(colors[2])

您当前通过将值互补输出到(而不是等效)输入值来生成完全相反的颜色。

答案 1 :(得分:2)

而不是255 - parseInt(colors[i]),它应该是parseInt(colors[i])

在当前实现中 - 如果红色为0,255 - 0 = 255,则十六进制为FF。