将RGB转换为HEX

时间:2010-11-22 17:23:59

标签: flex flash actionscript-3 colors

如何在RGB中将RGB颜色转换为HEX?例如:R = 253 G = 132 B = 58。

韩国社交协会

4 个答案:

答案 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;
}