C: Binärdaten in Datei schreiben

Gast #3919801
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ß
#3919810
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?
#3919819
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?
#3921500
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren