Konvertierungen



  • und genau das funktioniert nicht ...
    wenn ich den buffer zum cstring dazu addiere wird nicht alles von dem buffer geaddet...

    also wenn ich mit die datei (die ich in den buffer einlese) angucke sieht der wie folgt aus: <stx><enq><nul> usw

    und genau die nul ist das problem denn wenn ich nun den char buffer zu dem cstring dazu adde passiert folgendes:

    in dem cstring steht dann nur noch: "setConfig <stx><enq>" und das wars ...
    daher will ich den cstring in ein char buffer umwandeln und davor setzen



  • dann erzeug dir doch einen char buffer in der länge deiner beiden quellbuffer und copiere erst den CString und dann deinen charbuffer mit memcpy ein und fertig. Oder löst das auch nicht dein Problem?



  • *ggg* genau das versuch ich ... nur wie kopiere ich den cstring in einen char buffer ? und wie hänge ich dann den buffer der datei an den ergebnisbuffer hinten dran ?



  • Was steht den in dem Buffer ? Sind dort Zeichen oder auch nicht druckbare Zeichen enthalten.. das Problem ist das alle String Operationen und Anzeige Mechanismen, auch die des Debuggers bei einem '\0' (Null Terminierung) "aufhören"..

    Evtl. solltest Du zwei Buffer verwenden und diese in einen gemeinsamen Buffer kopieren..



  • @UserMarcus: genau das versuch ich wie gesagt 😉
    nur irgendwie bekomm ich das net hin ...

    in dem datenbuffer stehen daten die teilweise nicht druckbar sind ... das ist richtig ... und wie ich auch schon dachte : jo das ist das problem daher will ich ja beides in buffern belassen ... nur bekomm ich den cstring nicht in einen buffer (bzw weis nicht wie das geht) und ich weis nicht wie man an den buffer nun auch noch was anhängt bzw (in cstring steht ja ein fester string von 9 zeichen + das leerzeichen) also an der 11. stelle anfängt und da den daten buffer einfügt

    also irgendwie muss man 9 stellen des cstrings adden
    dann 1 stelle für das leerzeichen
    und dann noch 165 zeichen für den buffer der datei ...



  • CString cs="Hallo ";
    	char s[]="Welt!\0additional content!";
    	char sCat[64];
    	memcpy(sCat,cs.GetBuffer(),cs.GetLength());
    	memcpy(sCat+cs.GetLength(),s,sizeof(s));
    

    ?



  • ok das scheint zu klappen ...

    so und nu noch eine sache:
    ich hab jetzt meine daten übertragen ...
    wie bekomm ich jetzt jetzt aus einem buffer der 175 zeichen groß ist
    einen neuen buffer der die 165 zeichen groß ist un die daten von byte 11-175 aus buffer 1 enthält ?



  • LordTerra schrieb:

    wie bekomm ich jetzt jetzt aus einem buffer der 175 zeichen groß ist
    einen neuen buffer der die 165 zeichen groß ist un die daten von byte 11-175 aus buffer 1 enthält ?

    Du erzeugst einen neuen Puffer und kopierst per memcpy alles rein, was du brauchst. Wenn du beim Quellpuffer nicht bei 0 anfangen willst, sondern bei 11, dann addierst du einfach 11 auf den Zeiger.



  • hmmm und wie sieht das als quellcode aus ?
    weil bei memcpy geb ich doch eigentlich nur (ziel / quelle / größe der quelle) an oder nicht ???



  • Beispiel:

    unsigned char buffer1[32];
    unsigned char buffer2[]="12345678";
    memcpy(buffer1+16,buffer2,8);
    

    Und jetzt sieh dir mit dem Debugger an, wohin geschrieben wurde.


Anmelden zum Antworten