如何将 RGB 格式的颜色转换为十六进制格式,反之亦然?
例如,将 '#0080C0'
转换为 (0, 128, 192)
。
原文由 Sindar 发布,翻译遵循 CC BY-SA 4.0 许可协议
如何将 RGB 格式的颜色转换为十六进制格式,反之亦然?
例如,将 '#0080C0'
转换为 (0, 128, 192)
。
原文由 Sindar 发布,翻译遵循 CC BY-SA 4.0 许可协议
hexToRgb 的替代版本:
function hexToRgb(hex) {
var bigint = parseInt(hex, 16);
var r = (bigint >> 16) & 255;
var g = (bigint >> 8) & 255;
var b = bigint & 255;
return r + "," + g + "," + b;
}
编辑:2017 年 3 月 28 日这是另一种方法这似乎更快
function hexToRgbNew(hex) {
var arrBuff = new ArrayBuffer(4);
var vw = new DataView(arrBuff);
vw.setUint32(0,parseInt(hex, 16),false);
var arrByte = new Uint8Array(arrBuff);
return arrByte[1] + "," + arrByte[2] + "," + arrByte[3];
}
编辑:2017 年 8 月 11 日经过更多测试后,上面的新方法并不更快 :(。虽然这是一种有趣的替代方法。
原文由 David 发布,翻译遵循 CC BY-SA 3.0 许可协议
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
注意:
rgbToHex
的两个版本都期望r
、g
和b
的整数值,因此如果您有非整数值,则需要进行自己的舍入。以下将对 RGB 到十六进制的转换执行并添加任何所需的零填充:
换一种方式:
最后,
rgbToHex()
的替代版本,如@casablanca 的回答 中所讨论并在@cwolves 的评论中建议:2012 年 12 月 3 日更新
这是
hexToRgb()
的一个版本,它还解析一个速记十六进制三元组,例如“#03F”: