преобразовать в трехзначный шестнадцатеричный код цвета

Я использую трехзначные значения #fff цвета в CSS в течение длительного времени: #fff , #999 , #069 и т. Д. Я вижу, как повторяющиеся буквы / числа объединяются для создания трехзначного шестнадцатеричного цветового кода, но я не совсем понимаю шаблон, чтобы писать конвертер в PHP. Есть ли для этого документация?

Edit: О, возможно, мой вопрос был не ясен. Мне нужно знать, как некоторые 6-значные шестнадцатеричные значения цвета преобразуются в 3-значные цифры. xxxxxx ( ffffff ) и xxyyzz ( 006699 ) – это только два шаблона, правильно?

Чтобы преобразовать шестнадцатеричный код из 3 символов в 6-значный, вам нужно повторить каждый символ:

 $hex = '#fff'; $hex6 = '#' . $hex[1] . $hex[1] . $hex[2] . $hex[2] . $hex[3] . $hex[3]; 

Если вы хотите преобразовать его в десятичный, вы можете использовать функцию hexdec

3-значный код CSS короткий для 6 цифр ": # 06a; is # 0066aa;
Каждые две цифры представляют собой число от 0 до 255.
Преобразование этих значений в шестнадцатеричные и обратно – все, что вам нужно.

#f0f расширяется до #ff00ff поэтому вам просто нужно вычислить значение и значение времени 16 для каждого символа, например:

#f98 : f = 15 => красный = 15 + 15 * 16 = 255 и т. д.

 function hexfix(str) { var v, w; v = parseInt(str, 16); // in rrggbb if (str.length == 3) { // nybble colors - fix to hex colors // 0x00000rgb -> 0x000r0g0b // 0x000r0g0b | 0x00r0g0b0 -> 0x00rrggbb w = ((v & 0xF00) << 8) | ((v & 0x0F0) << 4) | (v & 0x00F); v = w | (w << 4); } return v.toString(16).toUpperCase(); } var hex1 = 'AABBCC', hex2 = 'ABC'; document.body.appendChild(document.createTextNode(hex1+" becomes "+hexfix(hex1)+'. ')); document.body.appendChild(document.createTextNode(hex2+" becomes "+hexfix(hex2)+'. '));