Char Array zu Byte Array



  • Hallo,
    ich beschäftige mich zu Zeit mit der Umwandlung von Text in 7 Bit codierte Nachrichten.

    Funktioniert auch einwandfrei.
    Mein Problem:

    Der convertierte Text wird in einem Char Array gespeichert.
    Wie kann ich diesen jetzt in einen Byte Array verwandeln?!!

    Beispiel:

    Klartext: text
    7 Bit Codiert: F4F29C0E
    Was-ich-will: {0xF4, 0xF2, 9C, 0E}

    kann mir da einer helfen?
    Bitte? 😞

    PS: Nutze Eclipse und C



  • Ich verstehe deine Frage nicht.

    Wertebereiche der Typen sind:
    char: -128...127
    unsigned char: 0...255



  • Ich will den String quasi alle 2 Zeiche splitten.
    Hier: F4 F2 9C 0E
    und diese, ja noch als Ascii Zeichen genauso als Hexadezimal.
    Ascii F4 => Hex F4

    Hoffe jetzt ist es verständlicher

    PS: Danke für die Super schnelle Antwort!!



  • Chriss612 schrieb:

    Der convertierte Text wird in einem Char Array gespeichert.
    Wie kann ich diesen jetzt in einen Byte Array verwandeln?!!

    ein char ist meistens ein byte, mit einem char array hast du also auch gleich ein byte array.



  • Hab mich vllt falsch ausgedrückt.
    Ich muss den convertierten Text als befehl ans ein Mobiltelefon senden
    Dies muss im Hexadezimal geschehen.

    muss also anstelle des

    Strings "F4F29C0E"

    0xF4 0xF2 0x9C 0x0E

    hinschicken.



  • Du brauchst nichts zu konvertieren:

    void sendeByte(unsigned char b) { __lib_sendebyte2telefon(b); }
    
    char *text="foobar";
    while( *text ) sendeByte(*text++);
    


  • Hab mal eben sowas gefunden:

    sscanf(str, "%x", &nResult);
    

    Ich hoffe, ich hab dich richtig verstanden: du hast also einen String wie "F4A611" und möchtest daraus ein Byte-Array wie {0xF4, 0xA6, 0x11} machen. Die Funktion oben kann dir aber nur 0xF4A611 liefern. Wenn du tatsächlich ein Array haben willst, musst du das schon selbst umsetzen. Das sollte ja möglich sein, nen bissl shiften, nen bissl ASCII-Codes, und so weiter...



  • Heimelchen schrieb:

    Hab mal eben sowas gefunden:

    sscanf(str, "%x", &nResult);
    

    Ich hoffe, ich hab dich richtig verstanden: du hast also einen String wie "F4A611" und möchtest daraus ein Byte-Array wie {0xF4, 0xA6, 0x11} machen.

    Bingo! Genau das will ich!!
    Aber verstehe irendwie nicht wie ich einen sollchen Array füllen kann : (



  • Chriss612 schrieb:

    Ich muss den convertierten Text als befehl ans ein Mobiltelefon senden

    zeig mal die deklaration der funktion, die das macht.



  • Wie füllen? Ich denke, das mach sscanf für dich.



  • Chriss612 schrieb:

    Bingo! Genau das will ich!!
    Aber verstehe irendwie nicht wie ich einen sollchen Array füllen kann : (

    Machst du ein Array mit malloc. Dann liest du die Werte aus der Zeichenkette, rechnest sie um und speicherst sie in dem Array.


Anmelden zum Antworten