yssi83 Skrevet 28. mai 2007 Del Skrevet 28. mai 2007 (endret) Jeg holder på med bildebehandling og bruker et bibliotek som gir ut RGBA-verdiene i én int-verdi. Når jeg viser de som heksadesimal: cout << hex; cout << "RGBA: " << ptRgba[0]; får jeg ut feks RGBA: bcbcbcff der R=bc, G=bc, B=bc og A = ff. Finnes det en måte å hente ut de forskjellige verdiene fra en slik int? Altså hente ut de første åtte bitsene og lagre de for seg, og så de neste åtte bitsene og lagre for seg osv. Endret 28. mai 2007 av yssi83 Lenke til kommentar
Zolo Skrevet 28. mai 2007 Del Skrevet 28. mai 2007 Jeg holder på med bildebehandling og bruker et bibliotek som gir ut RGBA-verdiene i én int-verdi. Når jeg viser de som heksadesimal: cout << hex; cout << "RGBA: " << ptRgba[0]; får jeg ut feks RGBA: bcbcbcff der R=bc, G=bc, B=bc og A = ff. Finnes det en måte å hente ut de forskjellige verdiene fra en slik int? Altså hente ut de første åtte bitsene og lagre de for seg, og så de neste åtte bitsene og lagre for seg osv. 8721016[/snapback] Dersom du har int i = 111 så kan du ta 111/10 = 11 og ta 111-(11*10) som gir det siste siffer 1 osv. Lenke til kommentar
Giddion Skrevet 28. mai 2007 Del Skrevet 28. mai 2007 Jeg holder på med bildebehandling og bruker et bibliotek som gir ut RGBA-verdiene i én int-verdi. Når jeg viser de som heksadesimal: cout << hex; cout << "RGBA: " << ptRgba[0]; får jeg ut feks RGBA: bcbcbcff der R=bc, G=bc, B=bc og A = ff. Finnes det en måte å hente ut de forskjellige verdiene fra en slik int? Altså hente ut de første åtte bitsene og lagre de for seg, og så de neste åtte bitsene og lagre for seg osv. 8721016[/snapback] Det du burde gjøre er å bruke en char peker som du setter til å peke samme sted som int arrayen (hvis det er en array) og så bruker du den istede. Jeg vet ikke helt hvordan du får intene, men du kunne jo eventuelt bare sendt en char array peker istede (hvis du sender en int array). Prinsippet er som koden under. Klikk for å se/fjerne innholdet nedenfor int main() { int RGBA = 0xaabbccdd;//kan godt være en array char R,G,B,A; char* pFarge; pFarge = (char*)&RGBA; //her kan du ha start loop R = *pFarge++;// mulig det skal være ABGR (opp mot ned) husker ikke helt :( G = *pFarge++; B = *pFarge++; A = *pFarge; //hvis du skal ha det i en loop må du ha ++ her også //slutt loop (neste pixel) return 0; } Lenke til kommentar
Jaffe Skrevet 28. mai 2007 Del Skrevet 28. mai 2007 Jeg holder på med bildebehandling og bruker et bibliotek som gir ut RGBA-verdiene i én int-verdi. Når jeg viser de som heksadesimal: cout << hex; cout << "RGBA: " << ptRgba[0]; får jeg ut feks RGBA: bcbcbcff der R=bc, G=bc, B=bc og A = ff. Finnes det en måte å hente ut de forskjellige verdiene fra en slik int? Altså hente ut de første åtte bitsene og lagre de for seg, og så de neste åtte bitsene og lagre for seg osv. 8721016[/snapback] Dette kan du også gjøre ved å ANDe bitene du vil hente med 11111111 (0xFF) slik at bare de aktuelle bitene blir igjen. Deretter bitshifter du dem så mange ganger til høyre som er nødvendig for å få igjen den rette verdien. int R = (ptRgba[0] & 0xFF000000) >> 24; int G = (ptRgba[0] & 0x00FF0000) >> 16; int B = (ptRgba[0] & 0x0000FF00) >> 8; int A = (ptRgba[0] & 0x000000FF); Lenke til kommentar
yssi83 Skrevet 29. mai 2007 Forfatter Del Skrevet 29. mai 2007 Tusen takk for svar. Skal prøve begge deler. Lenke til kommentar
yssi83 Skrevet 29. mai 2007 Forfatter Del Skrevet 29. mai 2007 Dette kan du også gjøre ved å ANDe bitene du vil hente med 11111111 (0xFF) slik at bare de aktuelle bitene blir igjen. Deretter bitshifter du dem så mange ganger til høyre som er nødvendig for å få igjen den rette verdien. int R = (ptRgba[0] & 0xFF000000) >> 24; int G = (ptRgba[0] & 0x00FF0000) >> 16; int B = (ptRgba[0] & 0x0000FF00) >> 8; int A = (ptRgba[0] & 0x000000FF); 8721767[/snapback] Det funket som bare det! enkelt og greit. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå