0x80000000L+0xbbggrr??? Farbe wird doch abgespeichert als 0x00rrggbb, oder?



  • Folgende Angaben stehen mir zur Verfügung:
    #define Color_Extended 0x80000000L
    Angabe der tatsächlichen Farbe als RGB-Wert in der Form:
    Color_Extended + 0x00bbggrr

    Welchen Vorteil verschafft mir die obige Addition?
    Meiner Meinung nach wird die Farbe in einem Binärcode als 0xrrggbb00 geschrieben, oder? Das hab ich mit dem nachfolgenden Programm getestet und bewiesen:

    #include <iostream.h>
    #include <stdio.h>
    #include <string.h>
    #include <windows.h>
    
    typedef DWORD COLORREF; 
    
    int main()
    {
             FILE * f;
    	char *RotGruenBlau;
    	RotGruenBlau = "  2;255;  5";
    	COLORREF color; 
    	int r, g, b;
    	sscanf(RotGruenBlau,"%i;%i;%i",&r,&g,&b); 
    	color = RGB(r,g,b);
    	f = fopen("color.txt","wb+");
    	fwrite(&color,sizeof(COLORREF),1,f);
             fclose(f);
             return 0;
    
    }
    

    Was meint ihr dazu??? 😕



  • ga_un schrieb:

    Meiner Meinung nach wird die Farbe in einem Binärcode als 0xrrggbb00 geschrieben, oder?

    Binär? Nein, 0x liefert einen Hexadezimalwert zurück, sprich der Wert ist Hexadezimal und nicht Binär.

    Code-Hacker



  • ga_un schrieb:

    Meiner Meinung nach wird die Farbe in einem Binärcode als 0xrrggbb00 geschrieben, oder? Das hab ich mit dem nachfolgenden Programm getestet und bewiesen:

    Nicht wirklich. Du hast nur bewiesen, dass das rr-Byte als erstes in die Datei geschrieben wird. Das sagt aber nichts darüber aus, an welcher Stelle deines 4-Byte-Wertes das rr-Byte steht.

    Vgl. Little Endian / Big Endian

    P.S.:
    0x00bbggrr ist schon richtig.


Anmelden zum Antworten