RGB888 à RGB565 / Décalage de Bits
Je veux combiner les trois personnages dans un court en utilisant le décalage de bits. C'est pour la mise en œuvre de la RGB565 palette de couleurs (où il y a 5 bits pour le rouge, 6 pour le vert, 5 pour le bleu).
Voici mon exemple de programme, je suis juste en manque une étape dans le milieu, je pense que là où j'ai besoin de faire quelques anding.
#include <stdio.h>
int main( ){
unsigned char r, g, b;
unsigned short rgb;
r = 255; //0xFF 1111 1111
g = 100; //0x64 0110 0100
b = 50; //0x32 0011 0010
r = r >> 3; //0x31 0001 1111
g = g >> 2; //0x19 0001 1001
b = b >> 3; //0x06 0000 0110
//r = r & something; //
//g = g & something; //
//b = b & something; //
//Desired result:
// R G B
//0xFB26 11111 011001 00110
rgb = r | g | b;
printf( "r 0x%x g 0x%x b 0x%x, rgb 0x%08x\n", r, g, b, rgb );
}
Vous pouvez voir mon résultat souhaité à la fin. Merci pour l'aide!
OriginalL'auteur conor | 2012-07-13
Vous devez vous connecter pour publier un commentaire.
Nous passer
r
gauche par 11 bits,g
gauche par 5 bits et bit à bit OU avecb
décalé à droite par 3 bits. (NB: cela suppose que les valeurs ont déjà été masqué, si nécessaire, de supprimer des bits.)| b
partie.b
8 bits, mais vous avez seulement besoin d'ajouter 5 les plus importants d'entre eux. Doit être quelque chose comme| (b >> 3)
oui, je pense que vous avez peut-être raison - je ne sais pas pourquoi il a accepté de répondre - il semble que je n'avais pas lu la question correctement ou quelque chose. De toute façon, n'hésitez pas à modifier et de le corriger.
En fait, les deux autres maj valeurs ont été aussi mauvais. Drôle, j'ai fait la même erreur dans mon projet. Demandez quel est le problème avec mes couleurs, puis je suis venu ici pour vérifier si ma formule est correcte, et depuis nos formules match, j'ai conclu que l'erreur est ailleurs 🙂
Merci encore pour la fixation de cette réponse - c'est souvent le plus simple des morceaux de code où l'on fait le plus d'erreurs!
OriginalL'auteur Paul R
Merci pour A2A. J'avais aussi été confronté au même problème. Le code ci-dessous pourrait vous aider.
Vous pouvez trouver le programme en python dans le GIThub.
https://github.com/ajay126z/RGB888ToRGB565-Converter
OriginalL'auteur user2355911