【问题标题】:Converting RGB to HEX fails将 RGB 转换为 HEX 失败
【发布时间】:2013-04-03 19:20:23
【问题描述】:

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

为什么它不起作用?

【问题讨论】:

    标签: javascript hex rgb


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-02-25
        • 2016-08-11
        • 2018-01-31
        • 2019-02-08
        • 2017-07-26
        • 2013-11-12
        • 1970-01-01
        • 2022-08-17
        相关资源
        最近更新 更多