Bitweise Integer
-
Hallo,
ich habe hier eine Aufgabenstellung zu bearbeiten. Und zwar habe ich gegeben. werte für R,G,B, jewils von 0-255, also 8 Bit.
Diese sollen jetzt hintereinander in einen 32Bit Integer (RGB) geschrieben werden. also die ersten 8 Bit für R, die nächsten für G..B und die letzen mit 0er freilassen.
ich habe mir gedacht dass ich das mit einem Pointer mache, aber so richtig durchsetzen hat nicht geklappt.
ich wollte die startadresse für RGB festlegen, und an die gleiche Adresse R schreiben, 8Bit weiter G schreiben...
leider fehlten mir dazu dann die richtigen Befehle mit Syntax.
vielen Dank für eure Hilfe
MfG
Daniel
-
Das macht man so:
uint32 rgb = r << 24 | g << 16 | b << 8;Falls du einen oder mehrere der Operatoren nicht kennst, solltest du das Kapitel über die Bit-Operatoren in deinem Buch nachlesen.
-
Du müsstest dann Zeigerarithmetik verwenden.
byte* rgb = ...; *rgb = r; ++rgb; // naechstes Byte bitte *rgb = g; ++rgb; *rgb = b;Eine andere Möglichkeit ist die Verwendung von bitweisen Operatoren, zB
uint32(r) | (uint32(g) << 8) | (uint32(b) << 16)Was man verwendet hängt mehr oder weniger davon ab, welche Endian Anforderungen gestellt werden.