[gelöst] Stellen im Char Array auf Byte Wertigkeit prüfen



  • Hallo,

    ich habe mir eine Funktion geschrieben, die mir alle Stellen eines Char Arrays auf ihre Bytewertigkeit prüft und bei bestimmten Werten (in diesem Falle 0xFF und 0xF0) diese durch andere Sequenzen ersetzt. Es geht also ums Escapen spezieller Zeichen.

    Meine Funktion sieht abgespeckt folgendermaßen aus:

    function escape(char *in, char *out, int len)
    {
    	int i;
    	for (i=0; i<len; i++)
            {
    		switch(in[i])
    		{
    			case 0xFF:
    				printf("0xFF gefunden\r\n");
    				break;
    			case 0xF0:
    				printf("0xF0 gefunden\r\n");
    				break;
    			default:
    				printf("Was anderes gefunden\r\n");
    				break;
    		}
            }
    }
    

    Leider wird niemals der Zweig mit 0xFF bzw. 0xF0 ausgeführt, auch wenn ich explizit ein char Array nach folgender Form rein gebe:

    char a[2], *ptr;
    
    ptr = a;
    a[0] = 0xFF;
    a[1] = 0xF0;
    

    Hat hier jemand vielleicht eine Idee was der Fehler sein könnte?



  • In char ist vorzeichenbehaftet, 0xFF wird darin als -1 statt 255 gespeichert bzw. ausgewertet. Ein guter Compiler gibt aber eine Warnung aus, wenn man einem char Werte wie 0xFF zuweist.
    Mit einem Array aus unsigned char s sollte das Ganze klappen.



  • Probiere es mal mit unsigned char statt char.



  • Jawoll das funktioniert 🙂

    Vielen Dank euch beiden!


Anmelden zum Antworten