Datei Binär einlesen um sie zu teilen und in kleinen Packeten zu verschicken



  • Hallo Mädels,

    kann mir wer bei meinem Problem helfen ein Bitmap binär einzulesen um es anschliessend in kleinen Stücken zu verschicken?

    Habe bereits folgendes und einiges mehr probiert, aber leider ohne Erfolg:

    CString Name="c:\\test.txt"; //  schwarzweiss.bmp";
    char Buffer[10000];
    
    ifstream ifFile(Name,ios::in|ios::binary);
    ifFile.read(Buffer,10000);
    
    m_ausgabe = Buffer;
    UpdateData(false);
    

    Schaue ich mir nun die Ausgabe an so bekomme ich nur die 4 ersten Zeichen angezeicht. Schaue ich mir die eingelesenen Daten im Hexeditor an so sehe ich, dass nach dem 4ten Zeichen "00" folgt. 😕
    Ab dort wird nicht mehr dargestellt.

    Gruss
    Guenni



  • Ich bin nicht der Spezialist für solche Sachen, aber ich würde das ganze nicht als char sondern als BYTE einlesen.
    Man könnte auch WORD oder DWORD nehmen, aber da werden dann 2 bzw 4 Byte auf einmal gespeichert.



  • Du solltest auf jeden fall immer den Rückgabewert von Lesefunktionen prüfen damit du weist, wieviel Zeichen wirklich gelesen wurden.

    An sich hat deine Leseroutine auch keinen Fehler, aber du kannst Binäre Daten nicht so ohne weiteres in einem CString speichern. Normalerweise wird ein String im Speicher durch eine 0x00 terminiert. Bei Binärdaten ist dies allerdings nicht der Fall. Hier speichert man normalerweise irgendwo seperat die Größe der Binärdaten ab und arbeitet damit.

    Lange rede, kurzer sinn. Prüfe den Rückgabewert read Funktion. Dieser sagt dir, wieviel gelesen wurde. Nun schickst du (womit auch immer) den char Puffer direkt (ohne die Speicherung in einem CString Objekt) mit Angabe der Größe, die du zuvor gelesen hast.



  • hmmmm...

    also ich weiss dass man strings mit einem "\0" terminiert

    ist dieses das "0x00" im hexeditor?

    weil bis dahin wird ja schliesslich meine datei ausgelesen und in meinen string geschrieben
    irgendwo habe ich vor einiger zeit auch mal soetwas wie "ignore" gesehen mit dem man diese zeichen ueberspringen kann
    doch leider finde ich diesen beitrag nicht mehr

    langer rede kurzer sinn 😉 : ich raffs nicht und bräuchte ein wenig mehr anleitung oder codefetzen um mir das mal besser zu verinnerlichen
    anhand von code kann man es schoen nachvollziehen

    gruss
    guenni


Anmelden zum Antworten