unsigned char array -> Elemente im Binärformat anzeigen



  • ich habe ein unsigned char array: unsigned char rec[32]; das von einem Messgerät mit Daten gefüllt wird. Da ich bestimmte Statusbits auslesen möchte, möchte ich mir die Daten binär ansehen um zu prüfen welche Bits gesetzt sind. Das soll dann in ein AnsiString gewandelt werden um es auf ein Memo ausgeben zu lassen. Wie wandelt man das um? Gibts da auch ne Funktion so wie IntToHex?



  • Mir fällt jetzt keine ein, aber du kannst doch schnell was basteln, z.B. sowas in der Richtung:

    std::string CharArrayToBinStr(char *arr,int charCount) {
    	std::string str("");
    	for(int i=0;i<charCount;++i) {
    		for(int j=7;j>=0;--j) str+= arr[i]&(1<<j) ? '1' : '0';
    	}
    	return str;
    }
    


  • Danke erst mal. Eigentlich will ich aus dem Feld prüfen ob und welche Bits gesetzt sind. zB if(1.Bit gesetzt) mache das; else if(2.Bit gesetzt) mache dies; usw...



  • Na ja, komplett händisch kannst du es natürlich machen mit

    if(c&(1<<0)) {
    ...
    }elseif(c&(1<<1)) {
    usw...
    

    Wenn du es bequemer haben willst, wäre vielleicht so eine Union was?

    struct bits {
    	char b0:1;
    	char b1:1;
    	char b2:1;
    	char b3:1;
    	char b4:1;
    	char b5:1;
    	char b6:1;
    	char b7:1;
    };
    union charbits {
    	char c;
    	bits bs;
    };
    
    //später
    charbits cb;
    cb.c=4;  //deinen char zuweisen
    if(cb.bs.b0) ...
    

Log in to reply