NOTE: Ceci est juste une modification de ma réponse à votre question précédente, puisque les deux sont si similaires - il vous suffit d'inverser le processus.
Vous sera tout d'abord avoir pour accéder à chacune des composantes de couleur (à savoir extraire la valeur R, la valeur V et de la valeur B). La façon de procéder dépend totalement de la façon dont la couleur est stockée dans la mémoire. Si elle est stockée en tant que RVB, avec 5-6-5 bits pour les composants, vous pouvez utiliser quelque chose comme ceci:
blueComponent = (colour & 0x3F);
greenComponent = (colour >> 6) & 0x3F;
redComponent = (colour >> 12) & 0x3F;
Cela va extraire les composants de couleur pour vous, vous pouvez utiliser la méthode décrite ci-dessus pour convertir chacun des composants (je suppose que 18 bits utilisera 6 bits par composant):
blueComponent = (blueComponent/64.0) * 32;
//greenComponent = (greenComponent/64.0) * 64; //not needed
redComponent = (redComponent /64.0) * 32;
Notez que le code ci-dessus, il est important que vous utilisez 64,0, ou une autre méthode qui assurera que votre programme représente le nombre comme un nombre à virgule flottante. Ensuite, pour combiner les composants dans votre couleur 18 bits, utilisez:
colour = (redComponent << 11) | (greenComponent << 5) | blueComponent;
je modifier l'original plutôt que de faire un presque double: http://stackoverflow.com/questions/1056879/how-18-bit- device-display-bitmap – GManNickG
modifiez le message original au lieu d'en poster un nouveau. – Naveen
S'il vous plaît ne pas créer de questions en double http://stackoverflow.com/questions/1056879/how-to-represent-18bit-color-depth-to-16bit-color-depth –