"Masque" Hexadécimal

"Masque" Hexadécimal - Divers - Programmation

Marsh Posté le 28-05-2003 à 15:16:03    

:hello:  
Heu j'ai juste un petite question...
 
J'ai une couleur en héxadécimal.. du style
0x123456
 
et heu.. j'aimerai récuperer l'héxa de chaque couleur..
0x12 0x34 0x56
 
comment faire? avec un "et" ou un "ou" logique?
quel masque appliquer?
 
du style :
0x123456 & 0x001100 = 0x003400 = 0x34 (c un exemple hein.. je me rend bien compte que c'est débile)


Message édité par Mr yvele le 28-05-2003 à 15:17:39
Reply

Marsh Posté le 28-05-2003 à 15:16:03   

Reply

Marsh Posté le 28-05-2003 à 15:21:02    

Code :
  1. MASKRED = 0xFF0000
  2. MASKGREEN = 0x00FF00
  3. MASKBLUE = 0x0000FF
  4. red = (TACOULEUR & MASKRED >> 16) & 0x0000FF
  5. green = (TACOULEUR & MASKGREEN >> 8) & 0x0000FF
  6. blue = (TACOULEUR & MASKBLUE >> 0) & 0x0000FF


 
Edit : & et pas && comme on me l a fait remarquer :jap:


Message édité par VisualC++ le 28-05-2003 à 15:25:40
Reply

Marsh Posté le 28-05-2003 à 15:21:56    

Tu veux faire un truc dans ce genre, je suppose
 

Code :
  1. x = 0x123456;
  2. b = x & 0xFF;
  3. g = (x & 0xFF00) >> 8;
  4. r = (x & 0xFF0000) >> 16;


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
Reply

Marsh Posté le 28-05-2003 à 15:23:43    

VisualC++ a écrit :

Code :
  1. MASKRED = 0xFF0000
  2. MASKGREEN = 0x00FF00
  3. MASKBLUE = 0x0000FF
  4. red = (TACOULEUR && MASKRED >> 16) && 0x0000FF
  5. green = (TACOULEUR && MASKGREEN >> 8) && 0x0000FF
  6. blue = (TACOULEUR && MASKBLUE >> 0) && 0x0000FF




 
 :non: c'est &, pas &&


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
Reply

Marsh Posté le 28-05-2003 à 15:24:47    

exactement.. mais heu, je suis en action script.. :/
 
je devrai plutot passer par un masque binaire?.. heu.. j'ai dit une connerie la, nan?
 
0x123456 & 0b000011110000
 
 :??:

Reply

Marsh Posté le 28-05-2003 à 15:24:56    

oui y en a 1 en trop desole

Reply

Marsh Posté le 28-05-2003 à 15:26:15    

Ah nan c pareil.. chui con..
le probleme c'est qu'en actionscript, je peu pas faire de >> pour décaler..
 
 :sweat:

Reply

Marsh Posté le 28-05-2003 à 15:26:27    

Mr yvele a écrit :

exactement.. mais heu, je suis en action script.. :/
 
je devrai plutot passer par un masque binaire?.. heu.. j'ai dit une connerie la, nan?
 
0x123456 & 0b000011110000
 
 :??:  


 
 :pfff:  
0b000011110000 = 0xF0, c'est pareil


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
Reply

Marsh Posté le 28-05-2003 à 15:26:53    

Mr yvele a écrit :

exactement.. mais heu, je suis en action script.. :/
 
je devrai plutot passer par un masque binaire?.. heu.. j'ai dit une connerie la, nan?
 
0x123456 & 0b000011110000
 
 :??:  


 
Si tu peux specifier du binaire, tu dois pouvoir passer de l hexa :??:
 
Mais bon oui 0xFF0000 = 0b111111110000000000000000 et ainsi dessuite, donc a toi de remplacer

Reply

Marsh Posté le 28-05-2003 à 15:26:54    

Mr yvele a écrit :

exactement.. mais heu, je suis en action script.. :/
 
je devrai plutot passer par un masque binaire?.. heu.. j'ai dit une connerie la, nan?
 
0x123456 & 0b000011110000
 
 :??:  


 
heuh tu sais, le binaire se traduit en hexa et l'inverse aussi alors bon...

Reply

Marsh Posté le 28-05-2003 à 15:26:54   

Reply

Marsh Posté le 28-05-2003 à 15:27:48    

Mr yvele a écrit :

Ah nan c pareil.. chui con..
le probleme c'est qu'en actionscript, je peu pas faire de >> pour décaler..
 
 :sweat:  


 
Au pire, divise par la puissance de 2 correspondante
Mais c'est quoi ce langage qui n'a même pas de décalage ?


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
Reply

Marsh Posté le 28-05-2003 à 15:27:51    

oui je me suis planté je voulais mettre :
 
0b1111111100000000
 
mais bon.. tfaçon ça reviens au meme.. jpeu pas décaler..

Reply

Marsh Posté le 28-05-2003 à 15:28:14    

Tetragrammaton IHVH a écrit :


 
Au pire, divise par la puissance de 2 correspondante
Mais c'est quoi ce langage qui n'a même pas de décalage ?  


 
le langage de flash MX..  :sweat:

Reply

Marsh Posté le 28-05-2003 à 15:28:47    

Mr yvele a écrit :


 
le langage de flash MX..  :sweat:  


t vraiment sur de ton coup ? parce que la c abusé quand meme

Reply

Marsh Posté le 28-05-2003 à 15:29:41    

putain, a moins que je convertisse en string, puis que je découpe ma string, et enfin, je pourrai avoir mes 3 valeurs héxa, pour enfin, pouvoir les convertir en entier!
 
ouèèè!!
 
... mais c bidon comme solution..

Reply

Marsh Posté le 28-05-2003 à 15:30:35    

Mr yvele a écrit :

putain, a moins que je convertisse en string, puis que je découpe ma string, et enfin, je pourrai avoir mes 3 valeurs héxa, pour enfin, pouvoir les convertir en entier!
 
ouèèè!!
 
... mais c bidon comme solution..  


 
non, comme dit plus haut, tu fais une division par la puissance de deux qui va bien  
 
eg a la place de faire
r = (x & 0xFF0000) >> 16;  
 
tu fais
 
r = (x & 0xFF0000) / (2^16);

Reply

Marsh Posté le 28-05-2003 à 15:31:27    

chrisbk a écrit :


t vraiment sur de ton coup ? parce que la c abusé quand meme


 
 
merde... raaaahhhh jsuis un caca boudin!!!!!!!!
c'est bon, ça existe...
>> (décalage droit au niveau du bit)
 
 
zut, pardon pour vous avoir dérangé pour rien...
merdeuh!  
 
 [:theorie de nico]
 
 
 

chrisbk a écrit :


r = (x & 0xFF0000) / (2^16);  


 
Ah ben oui.. merde..
fait trop chaud.. c'est a cause du soleil.. chui fatigué... heu.. lol


Message édité par Mr yvele le 28-05-2003 à 15:33:41
Reply

Marsh Posté le 28-05-2003 à 15:31:45    

Mr yvele a écrit :

putain, a moins que je convertisse en string, puis que je découpe ma string, et enfin, je pourrai avoir mes 3 valeurs héxa, pour enfin, pouvoir les convertir en entier!
 
ouèèè!!
 
... mais c bidon comme solution..  


 
je t'ai dit : au lieu de ">> 8" tu fais "/ 256" et ">> 16" remplacé par "/ 65536". C'est quand même moins bidon.


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
Reply

Marsh Posté le 28-05-2003 à 15:32:35    

Mr yvele a écrit :


merde... raaaahhhh jsuis un caca boudin!!!!!!!!
c'est bon, ça existe...
>> (décalage droit au niveau du bit)


mon boolay [:jar jar]

Reply

Marsh Posté le 28-05-2003 à 15:35:30    

ouè hé ho c'est bon hein.. ça peux arriver hein..
 
à certains plus qu'a d'autres.. mais bon..  
 [:theorie de nico]
 
 
EDIT: merci les gars quand meme!  :jap:


Message édité par Mr yvele le 28-05-2003 à 15:36:05
Reply

Marsh Posté le 28-05-2003 à 15:36:55    

puisqu'on est a faire les cons dans les bits, Ki ki dit mieux que ca pour faire un alpha-blending 24bits ?
(code un peu plus propre mis de cote)
(MMX interdit :O)
 

Code :
  1. int alphaBlending(int rgb, int rgb2, unsigned char tAlpha)
  2. {
  3. int tmpbr       = (rgb&0xFF00FF);
  4. int tmpg        = (rgb&0xFF00);
  5. int tmp2  = rgb2 & 0xFF00FF;
  6. int tmp3  = ((tmp2 - tmpbr) * tAlpha)>>8;
  7. int br    = tmpbr+tmp3;
  8. br &=0xFF00FF;
  9.                                
  10. tmp2    = (rgb2 & 0xFF00);
  11. tmp3    = ((tmp2 - tmpg) * tAlpha)>>8;
  12. int g   = (tmpg + tmp3)&0xFF00;
  13. br    |= g;
  14. return br;
  15. }


 
me demande si en 16bits y'a pas moy de tout faire en une mult [:meganne]

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed