Announcement

Collapse
No announcement yet.

uint32_t in Ausgabedatei schreiben

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • uint32_t in Ausgabedatei schreiben

    Hallo!

    Ich habe folgendes Problem: Ich möchte eine uint32_t Zahl in eine Text-Datei schreiben.

    Dafür ist die Text-Datei mittels fopen und dergleichen bereits geöffnet. Wenn ich allerdings "putwc(zahl, outfile);" schreibe, werden im Hex-Editor lediglich die ersten 8 bit angezeigt. Wenn allerdings eine größere Zahl drinnen steht zB 450 fehlen die restlichen 24 bits?!?! Welcher Befehl wäre der richtige? Oder muss ich die uint32_t zuerst umspeichern? Ziel wäre es, alle 32 bits zu schreiben, auch wenn lediglich nur 5 im uint32_t Format gespeichert wird.

    Vielen Dank im Voraus für jede Hilfe!
    Michael

  • #2
    So wie ich das verstanden habe, willst Du die vier Bytes des uint32_t direkt in eine (Text)Datei schreiben, und nicht den Wert des uint32_t in "Klarschrift".

    Wie stellst du denn das EOF fest? Bzw. hast Du dir die Dateigröße anzeigen lassen?

    Bei 450 (dec) sollten eigentlich in Hex-Editor vier Bytes als "C2 01 00 00" zu sehen sein - hast du die abschliessenden 0 als nichts bzw. als nicht geschrieben interpretiert und die eine 1 übersehen? Meinst Du mit "zB 450" 450 dec?

    Und wenn es unbedingt eine Textdatei sein soll, mußt du auch nach dem Zeileninhalt ein CR/LF schreiben - sonst ist es keine Textdatei, also sollte der Dateiinhalt dann "C2 01 00 00 DA" sein. Das letzte CR/LF vorm EOF ist zwar nicht zwingend, aber bei nur einer Zeile und diese ohne Zeilenabschluß ist es eben alles mögliche, auch auf Wunsch eine Textdatei, aber nur, wenn nicht noch mehr hineingeschrieben wird.

    Comment


    • #3
      http://entwickler-forum.de/showthread.php/72062-uint8_t

      Die Anwort steht noch aus??

      putwc schreibt einen wc, d.h. pro Zeichen 2 Byte. fputc in C oder über einen stream mit write in C++ wäre zu benuten
      Zuletzt editiert von Christian Marquardt; 16.12.2012, 07:01.
      Christian

      Comment


      • #4
        Hallo Christian,

        http://entwickler-forum.de/showthread.php/72062-uint8_t diese Frage wäre beantwortet! Danke!

        Mit fputc wird leider nur ein Byte von den vier Bytes ausgegeben. (Im Output-File stehen nur 8-Bits) - Bei einer Zuweisung von 300 in das uint32_t und einer Ausgabe mit fputc stehen nur die letzten 8 Bits im Output-File (00101100) der 1 wird weggeschnitten.
        Woran könnte das liegen? Mein Ziel wäre es alle 32 Bits auszugeben.(im Beispiel 00101100 00000001 00000000 00000000)

        Danke

        Comment


        • #5
          Mit wieviel Accounts bist du hier unterwegs?

          Definiere WIE du das int in der Datei stehen haben willst. GGf. benutze http://www.cplusplus.com/reference/cstdio/fprintf/
          Christian

          Comment


          • #6
            Einem?

            Zum Beispiel die Zahl 300 sollte im File wenn man die Bits ansieht so aussehen: 00101100 00000001 00000000 00000000

            Code:
            uint32_t testzahl = 300;
            fputc(testzahl, output);
            Lg
            Zuletzt editiert von c-nooob; 16.12.2012, 17:42.

            Comment


            • #7
              Das ist die übliche Weise der Speicherung. Sollte also mit fprintf gehen
              Christian

              Comment

              Working...
              X