Forum: PC-Programmierung C: Binärdaten in Datei schreiben


von Max (Gast)


Lesenswert?

Hallo zusammen.
Ich habe aktuell das Problem Messdaten im 32bit signed Integer Format in 
reiner Binärform also ohne ASCII convertierung in ein File zu schreiben.
Grund: Eine 32bit Integer besteht wie ihr alle wisst aus 4bytes, eine 
32bit Integer convertiert in ASCII besteht dann mit Vorzeichen aus max. 
11Zeichen also 11Bytes.
Meine CPU benötigt also für den schreibvorgang um einiges länger und das 
möchte ich vermeiden.

Wie kann ich in C eine Datei anlegen in welche ich rein binäre Daten 
schreiben kann. Wie kann ich diese dann wieder an einem PC öffnen?

LG Gruß

von Peter II (Gast)


Lesenswert?

Max schrieb:
> Wie kann ich in C eine Datei anlegen in welche ich rein binäre Daten
> schreiben kann.

fopen und fwrite

>  Wie kann ich diese dann wieder an einem PC öffnen?
mit fopen und fread  oder einen hexeditor.

von Karl H. (kbuchegg)


Lesenswert?

Max schrieb:

> Wie kann ich in C eine Datei anlegen in welche ich rein binäre Daten
> schreiben kann.

So wie immer.
fopen

Bei den angebebenen Attributen aufpassen. Damit sich die Schreibroutinen 
sicher mit jeglicher Konvertierung raushalten, den Binärmodus angeben. 
Siehe Doku zu fopen.

Zum schreiben benutzt du dann ganz normal fwrite

> Wie kann ich diese dann wieder an einem PC öffnen?

Genau gleich, nur eben zum lesen öffnen und mittels fread aus der Datei 
lesen.

Praktisch jedes noch so grindige C-Buch hat ein relativ grosses Kapitel 
über Dateihandling in C. Welches C Buch benutzt du, dass da nichts 
darüber drinnen steht?

von Udo S. (urschmitt)


Lesenswert?

Max schrieb:
> Meine CPU benötigt also für den schreibvorgang um einiges länger und das
> möchte ich vermeiden.

Und was ist der Unterschied, ob die CPU jetzt zu 1% oder zu 2% 
ausgelastet ist?
Die Frage ist:
Was willst du erreichen?
Mit der Binärdatei brauchst du ein spezielles (selbstgeschriebenes) 
Programm um mit den daten weiterzuarbeiten.
Wenn du das als Text abspeicherst geht das auch in Excel oder einem 
Texteditor.

Ist die Performance überhaupt wesentlich an der Stelle? Wie viele 
tausend Zahlen pro Sekunde musst du verarbeiten?

von Rolf M. (rmagnus)


Lesenswert?

Max schrieb:
> Hallo zusammen.
> Ich habe aktuell das Problem Messdaten im 32bit signed Integer Format in
> reiner Binärform also ohne ASCII convertierung in ein File zu schreiben.
> Grund: Eine 32bit Integer besteht wie ihr alle wisst aus 4bytes, eine
> 32bit Integer convertiert in ASCII besteht dann mit Vorzeichen aus max.
> 11Zeichen also 11Bytes.
> Meine CPU benötigt also für den schreibvorgang um einiges länger und das
> möchte ich vermeiden.

Welche CPU? Und wieviel ist "einiges länger" in Zahlen? Wieviel Zeit 
steht denn zur Verfügung?
Zuerst solltest du mal rausfinden, ob der Unterschied wirklich 
signifikant ist.

von Max (Gast)


Lesenswert?

Danke für tipps.
Es handelt sich dabei um eine embedded Anwendung mit begrenzter 
Rechenleistung daher wollte ich diesen Weg gehen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.