如何在RGB中将RGB颜色转换为HEX?例如:R = 253 G = 132 B = 58。
韩国社交协会
答案 0 :(得分:17)
Robusto的解决方案太慢了。
因为RGB值的存储方式如下:
8b Red | 8b Green | 8b Blue
值0-255(这不是巧合)也有8b,你可以使用左按位移位来获得int值,然后你可以得到一个十六进制(几乎快3倍)。所以:
var intVal:int = red << 16 | green << 8 | blue;
var hexVal:String = intVal.toString(16);
hexVal = "#" + (hexVal.length < 6 ? "0" + hexVal : hexVal);
红色,绿色和蓝色是您要转换的RGB值。
答案 1 :(得分:3)
将RGB数转换为十六进制值并连接它们。
var hexVal = (253).toString(16) + (132).toString(16) + (58).toString(16);
hexVal = "#" + hexVal;
// returns "#fd843a"
这不像它应该的那么优雅,但它应该给你这个想法。
答案 2 :(得分:3)
Aurel300几乎是标准方式,所以我会选择它。 Robusto的解决方案是不正确的。
如果你想避免位操作,另一个选择是使用简单的算法:
var intVal:int = red * 0x10000 + green * 0x100 + blue;
或者,如果您认为十六进制表示法会引起混淆。
var intVal:int = red * 65536 + green * 256 + blue;
我发布这个只是为了向您展示获取十六进制值的另一种方法(一种更清楚地说明组件如何工作并且加起来最终值的方法,我认为),但是,正如我已经说过的那样,我会得到Aurel300的代码。
答案 3 :(得分:2)
大多数应用程序需要六位十六进制代码才能显示颜色:
function RGBtoHEX(r, g, b) {
var s = (r << 16 | g << 8 | b).toString(16);
while(s.length < 6) s="0"+s;
return "#"+s;
}