String in Byte umwandeln



  • Hallo Leute,

    Habe einen Stringwert. z.B. "FB01"
    Möchte nun den zerlegen und in ein Bytearray schreiben:

    Also so sollte das nach der Konvertierung aussehen.....

    Byte Ergebnis[2];

    Wert von Ergebnis[0]: FB
    Wert von Ergebnis[1]: 01

    Anschließend muss ich das gleich wieder umgekehrt machen; also bekomme als Ergebnis einer Berechnung zwei Bytewerte.
    Ergebnis[0] = FF
    Ergebnis[1]=30
    Das ganze dann wieder in einen String schreiben:
    String Result = "FF30"

    Kann mir jemand helfen? Bitte helft mir!!!!! 😕 :



  • Hi,

    probier mal Folgendes:

    int a = 0, b = 0;
    char *str = "FB02";
    char outstr[10];
    
    sscanf( str, "%2X%2X", &a, &b );
    printf(" %d, %d\n", a, b );
    sprintf( outstr, "%02X%02X", a, b );
    printf("%s\n", outstr );
    

    Achtung: Der Hex-String muss für das sscanf()-Suchmuster "%2X%2X" Grossbuchstaben enthalten - also evtl. vorher konvertieren.

    bis denne
    Brannigan



  • Hi Sepp!
    Vielen Dank für Deine schnelle Antwort. Habe auch schon ausprobiert und es funzt! Klasse.
    Kannst du mir noch erklären was es mit der Schreibweise"%2X%2X" auf sich hat, die 2 steht ja wohl für nehme 2 Zeichen und das X für Grossbuchstaben? Oder wiese klappt das nur für Grossbuchstaben?

    Vielen Dank schonmal und Grüße
    Ankli



  • Tja. Dazu schnappst du dir am besten ein gutes C-Buch. (K&R z.B).
    Für die Formatstrings gibts viele Steuerzeichen und Optionen. Diese sind leider nicht auf die Schnelle erkärt. Muss auch immer wieder mal nachschaun, aber die wichtigsten weiss man mit der Zeit. Und: Wie du siehst - es lohnt sich. Man kann sich mit scanf/printf-Funktionen viel Arbeit ersparen.
    Für diesen Fall: 2 steht (wie schon vermutet) für die Anzahl der Zeichen. Das X steht für ein Zeichen aus dem Hex-Alphabeth [0-F] - wobei die Buchstaben GROSS sind. Für die kleine Variante einfach ein x angeben.

    bis denn,
    Brannigan

    PS: Hab noch nen guten Link zum Thema ...
    http://www.harpercollege.edu/bus-ss/cis/166/mmckenzi/lect05/l05.htm


Anmelden zum Antworten