十六进制和RGB
十六进制(也称为基数 16 或者十六进制)是一种以 16 为基数的位置数字系统。
它使用 16 个不同的符号 0–9 表示值 0 到 9,使用 A–F 表示值 10 到 15.
RGB 颜色是一种加色模型,其中红色、绿色和蓝色相加以再现一系列颜色。
每个参数指定颜色的强度,可以是 0 到 255 之间的整数或者 0% 到 100% 之间的百分比值。
在本教程中,我们推荐了几种将 RGB 转换为十六进制,或者将十六进制转换为RGB值的方法。
让我们将 RGB 值转换为十六进制值。
rbgtoHex 有两个版本,它们期望 r、g 和 b 的整数值。
以下代码将 RGB 转换为十六进制并添加任何所需的零填充:
function componentToHex(c) { let hex = c.toString(16); return hex.length == 1 ? "0" + hex : hex; } function rgbToHex(r, g, b) { return "#" + componentToHex(r) + componentToHex(g) + componentToHex(b); } console.log(rgbToHex(28, 135, 201)); //#1c89c9
这是上述方法的替代方法:
function rgbToHex(r, g, b) { return "#" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1); } console.log(rgbToHex(28, 135, 201)); //#1c87c9
现在让我们将十六进制转换为 RGB:
function hexToRgb(hex) { let result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); return result ? { r: parseInt(result[1], 16), g: parseInt(result[2], 16), b: parseInt(result[3], 16) } : null; } console.log(hexToRgb("#1c87c9").b); //201
还有另一个版本的 hexToRgb() 也解析速记十六进制三元组:
function hexToRgb(hex) { let shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i; hex = hex.replace(shorthandRegex, function (m, r, g, b) { return r + r + g + g + b + b; }); let result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); return result ? { r: parseInt(result[1], 16), g: parseInt(result[2], 16), b: parseInt(result[3], 16) } : null; } console.log(hexToRgb("#0044ff").g); console.log(hexToRgb("#04f").g);
日期:2020-06-02 22:16:13 来源:oir作者:oir