Zum Inhalt springen

streams, files und hex-Zahlen


FighterFigger

Empfohlene Beiträge

Schon wieder muß ich auf grund von Unwissenheit die Community um Rat bitten ...

Hallo erstmal!

Ich habe vor in eine Datei Werte zu speichern, allerdings hat sich mein C++ irgendwie komisch.

Nehme ich einen ofstream ("...", ios::binary), und schreibe 0 hinein, dann schreibt er mir ASCII-Zeichen '0' (also 0x30) hinein. Ich will aber 0 (also 0x0000) eintragen.

Auch long-Werte vollständig mit allen hexadezimal-Stellen (zB: 0x25F1 0000) kann ich nicht richtig eintragen.

0 bekomme ich nur geschrieben, wenn ich mit '\0' arbeite, aber dann nicht als führende Nullen von Zahlwerten.

1.) Mache ich da was falsch, oder geht das mit Streams nicht? :(

2.) Ich nutze MFC, gibt es da File-Typen, die ich bevorzugen sollte, weil sie dieses können?

3.) Bin ich einfach zu [****] dazu? :confused:

Link zu diesem Kommentar
Auf anderen Seiten teilen

Oh - ich versuchte einiges ...

Sogar zum Teil mehr aus Verzweifelung als aus Hoffnung. So versuchte ich auch Sachen, die garnicht richtig sein konnten.


#include <fstream>

#include <iostream>


...


std::ofstream aout("myfile.dat", std::ios::binary);

aout << 0;                    //0x30

aout << (short)0;             //0x30

aout << std::hex << 0;        //0x30

aout << "\0";                 //nix

aout << '\0';                 //0x00 (so in etwa sollte das werden)

aout << NULL;                 //nix

aout.write(0, 1);             //0x30

'\0' gab schon ein richtiges Ergebnis mit seinen 0x00, aber eben nur ein Byte. Will ich zwei Byte, dann muß ich das zweimal schreiben (damit könnte ich leben), aber dynamisch ein Long auffüllen, wenn er klein genug ist, in 2 Byte zu passen, das ist unbequem, und doch sicherlich unnötig ... oder?

Irgendwie schreibt er immer den ACII-lesbaren Wert hin, anstatt einer Computerzahl.

(im File soll statt zB: "230" das ASCII-Zeichen von 230 stehen. Bei größeren Zahlen (zB:70000) eben solche Zeichen, deren Bitwerte denen der Zahl entsprechen, während sie im Speicher verweilt) ...

Ich hoffe, jemand versteht, was ich meine ...

Ich bin nämlich reichlich blind. Die Antwort ist sicherlich einfach, aber ich finde es einfach nicht

:(

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hab es :marine :bimei :OD

Danke, für die Denkanstöße ... die waren sehr anstößig :D und brachten mich dazu:


  UINT openFlags = CFile::typeBinary | CFile::shareDenyWrite | CFile:: modeWrite | CFile:: modeCreate;

  CFile aout("C:\\WinNT\\Desktop\\myfile.dat", openFlags);


  long l1 = 70000;

  long l2 = 255;


  aout.Write(&l1, 4);

  aout.Write(&l2, 4);


  aout.Close();	

So schreibt er genau das, was ich will. Ich gebe ihm eine Adresse und die Anzahl der Zeichen. Das rockt!

DANKE an euch :)

PS: :mod malt er immer da, wo ich " : : m o d e " stehen habe

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...