Wie kann ich ein Char mit einem exkusiven oder zusammen ziehen?



  • Hi!
    Wie kann ich die einzelen Chars zwischen $ und * zusammenziehen?

    $GPRMC,145320.999,A,5107.1103,N,00724.0344,E,0.06,41.78,031105,,*33

    versteht mich nicht falsch möchte nur wissen wie das mit dem exklosiven oder geht also ^

    ergebniss = char[i] ^ char[i+1]
    

    oder wie?



  • Im Prinzip ist das so richtig, wenn du alle Zeichen XOR-verknüpfen willst, empfehle ich dir eine Schleife:

    char* text="...";//Eingabetext
    int start_pos=strchr(text,'$')+1);//Startposition - hinter dem $
    int end_pso=strchr(text,'*');//Endposition - vor dem *
    char res=0;
    for(int pos=start_pos;pos<end_pos;++pos)
      res^=text[pos];
    


  • Danke für die schnelle antwort ! 👍 👍 ich hab noch ein problem wie erkenne ich ein ende eines Char ? ich lade :

    char[] = i
    

    in steht eine anzahl von zeichen aber wie viele habe ich geladen? 😕



  • ein char hat kein "Ende", das ist genau ein Byte groß. Bei einem char[] (Array von char's) kannst du die Größe mit sizeof ermitteln.

    Und die meisten stringverarbeitenden Funktionen setzen ein '\0' als letztes Zeichen hinter einen String, um das Ende zu kennzeichnen - solange du dich daran hältst, kannst du die Länge der gültigen Daten in einem char[] oder char* mit strlen abfragen.

    (oder du steigst um auf eine String-Klasse wie std::string (MFC hat einen eigenen CString, Borland dürfte etwas ähnliches verwenden))



  • also wird er dann so übertragen ?

    text = abcdefg\0

    🙄



  • Ja, zumindest solange du keine Funktionen verwendest, die sich nicht an diesen Standard halten.


Anmelden zum Antworten