J'utilise des valeurs de couleur hexagonales à 3 chiffres dans CSS pendant une longue période: #fff code>,
# 999 code>,
# 069 code> , etc. Je peux voir comment les lettres / chiffres répétitifs sont fusionnés pour créer un code de couleur hexagonale à 3 chiffres, mais je ne comprends pas complètement le motif de pouvoir écrire un convertisseur dans PHP. Y a-t-il une documentation pour cela? P>
xxxxxx code> (
ffffff code>) et
xxyyzz code> (
006699 code>) - ce sont les deux seuls schémas, correct? P >
4 Réponses :
Le code CSS 3 chiffres est court pour 6 chiffres ": # 06A; est # 0066AA;
Chaque deux chiffres représentent un nombre de 0 à 255.
Conversion de ces valeurs à HEX et à l'arrière est tout ce dont vous avez besoin. P>
Pour convertir un code hexagique de 3 caractères en une 6 caractère, vous devez répéter chaque caractère: si vous souhaitez le convertir en décimal, vous pouvez utiliser hexdec code>
fonction p> p> p>
# f0f code> est étendu à
# FF00FF code>, il vous suffit de calculer la valeur et la valeur de la valeur 16 pour chaque caractère, par exemple: P>
# F98 code>: f = 15 => rouge = 15 + 15 * 16 = 255 etc. p>
Ah, je semble avoir manqué le point - et mon sens de consulter l'API ( heexdec () code>).
Ainsi, en utilisant cette logique, vous pouvez simplement l'inverser en divisant par 16 afin d'obtenir la version hexagonale 3?
@JOSH Eh bien, oui. Mais vous vous limiterez efficacement à une granularité de 16 par canal au lieu de 256.
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)+'. '));
De quelle manière cherchez-vous la conversion? De 3 à 6 chiffres? Ou d'hex à décimal?
Les avantages d'un convertisseur seraient sûrement très limités. Après tout, seule une faible proportion de codes de couleur peut être simplifiée et pour une économie de seulement 3 caractères par code. Je serais surpris s'il y a une documentation, mais comme exercice de programmation, c'est probablement utile.
Oh, ma question n'était peut-être pas claire. J'ai besoin de savoir comment certaines des valeurs de couleur hexagonales à 6 chiffres sont converties en 3 chiffres? XXXXXX (FFFFFF) XXYYZZ (006699), ce sont les deux seuls motifs, correct?