Конвертировать RBG в HEX - PullRequest
       14

Конвертировать RBG в HEX

5 голосов
/ 22 ноября 2010

Как я могу преобразовать цвет RGB в HEX в AS3? Например: R = 253 G = 132 B = 58.

Tks.

Ответы [ 4 ]

17 голосов
/ 22 ноября 2010

Решение Робусто слишком медленное.

Поскольку значения 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, которые вы хотите преобразовать.

3 голосов
/ 22 ноября 2010

Aurel300 в значительной степени стандартный путь, поэтому я бы пошел с ним.Решение Робусто, как есть, неверно.

Другой вариант, если вы хотите избежать битовых операций, использует простую арифметику:

var intVal:int = red * 0x10000 + green * 0x100 + blue;

или, если вы думаете, что шестнадцатеричное представление вызовет путаницу.

var intVal:int = red * 65536 + green * 256 + blue;

Iопубликовал это просто для того, чтобы показать вам другой способ получения шестнадцатеричного значения (которое, я думаю, дает более четкое представление о том, как работают компоненты, и суммирует с конечным значением), но, как я уже сказал, я получил код Aurel300.

3 голосов
/ 22 ноября 2010

Преобразуйте числа RGB в шестнадцатеричные значения и объедините их.

var hexVal = (253).toString(16) + (132).toString(16) + (58).toString(16);
hexVal = "#" + hexVal;
// returns "#fd843a"

Это менее элегантно, чем следовало бы, но оно должно дать вам идею.

2 голосов
/ 29 октября 2012

Большинству приложений требуется шестизначный шестнадцатеричный код для цветов:

function RGBtoHEX(r, g, b) { 
    var s = (r << 16 | g << 8 | b).toString(16); 
    while(s.length < 6) s="0"+s;
    return "#"+s;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...