Des couleurs de 48 bits?

Très souvent, en particulier dans les choses liées au X11 (ressources X, thèmes Roxterm, etc.), je vois les couleurs spécifiées comme des nombres 48 bits: #2e2e34343636 , #cccc00000000 au lieu des 24 bits habituels #2e3436 et #cc0000 . À quoi servent les bits supplémentaires?

J'ai trouvé la réponse dans la documentation Xlib sous "Chaînes de couleurs". Il semble que Xlib utilise réellement des valeurs RVB de 16 bits pour les couleurs:

Spécification de chaîne de périphérique RVB

[…] une ancienne syntaxe pour périphérique RGB est prise en charge, mais son utilisation continue n'est pas encouragée. La syntaxe est un caractère de signe pointu initial suivi d'une spécification numérique, dans l'un des formats suivants:

 #RGB (4 bits each) #RRGGBB (8 bits each) #RRRGGGBBB (12 bits each) #RRRRGGGGBBBB (16 bits each) 

Les R, G et B représentent des chiffres hexadécimaux uniques. Lorsque moins de 16 bits sont spécifiés, ils représentent les bits les plus importants de la valeur (contrairement à la syntaxe "rgb:", dans laquelle les valeurs sont mises à l'échelle). Par exemple, la chaîne " #3a7 " est identique à " #3000a0007000 ".

Je ne peux pas parler de l'utilisation de X11, mais en général: des valeurs de couleur supplémentaires qui ne peuvent être produites à des profondeurs de bits inférieures et aux canaux alpha.

À partir des exemples que vous donnez, ils ne sont pas utilisés du tout car la valeur de 24 bits est simplement répétée (un peu comme la pratique consistant à utiliser uniquement 3 caractères hexadécimaux pour représenter les couleurs "websafe", donc # c00 signifie le même que # cc0000 ou 204 , 0,0, étendu à #cccc00000000).

Les valeurs de 32 bits utilisent habituellement le dernier octet pour canal alpha (transparence). Je suppose qu'il est possible que les valeurs de 48 bits utilisent des couleurs 24 bits avec un alpha par couleur indépendant, mais les exemples que vous donnez ne prennent pas en charge cela.