Converting RGB to HEX fails

Converting RGB to HEX fails

本文关键字:fails HEX to RGB Converting      更新时间:2023-09-26

遵循这个问题和许多其他问题,我试图将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

为什么不工作?

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

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

通过输出值与输入值互补的(而不是与等价的),您当前正在生成与完全相反的颜色。

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

在你当前的实现-如果红色是0,255 - 0 = 255,十六进制是FF