Datei mit Binärdaten in C auslesen

Gast #7026143
Lesenswert?

Hallo,

ich habe eine Datei mit 8 Bit Werten.
Also:
11011011
11000000

uws. Diese Binären Daten würde ich nun gerne auch Binär in einen Puffer 
schreiben. C interpretiert diese einsen und nullen als Character, 
korrekt?
Wir kann ich ihm beibringen das jede 1 in High, und 0 in Low ist und 
dies in einen Puffer schreiben?
#7026166
Lesenswert?

Ich glaub du vermischt da etwas.

Als erstes musst du dich festlegen, was du für Dateien hast:
Bsp. mit 2 Byte (0xCA & 0xFE)
- test.txt (ASCII Datei, 1 Byte ist mit 0 & 1 ausgeschrieben, 8 Zeichen)
- test.bin (Binäre Datei, 1 Byte nimmt nur 1 Byte Speicher ein)

Ist es eine binäre Datei, dann öffnest du die im binären Modus und liest 
einfach jedes Byte und schiebst es in dein Buffer.
Angehängte Dateien:
Gast #7026170
Lesenswert?

Dieter schrieb:
> Diese Binären Daten würde ich nun gerne auch Binär in einen Puffer
> schreiben. C interpretiert diese einsen und nullen als Character,
> korrekt?

Die Programmiersprache C interpretiert da garnix. Öffne einfach die 
Datei und lies deren Inhalt in ein ausreichend großes Array - oder denke 
dir etwas aus, um die Datei stückweise zu lesen, wenn sie zu groß ist.

Was du dann mit den gelesenen Bytes anstellst, ist deine Sache.

W.S.
#7026172
Lesenswert?

Dieter schrieb:
> Hallo,
>
> ich habe eine Datei mit 8 Bit Werten.
> Also:
> 11011011
> 11000000
>
> uws. Diese Binären Daten würde ich nun gerne auch Binär in einen Puffer
> schreiben. C interpretiert diese einsen und nullen als Character,
> korrekt?
> Wir kann ich ihm beibringen das jede 1 in High, und 0 in Low ist und
> dies in einen Puffer schreiben?

Lerne wie man Zeilen aus einer Datei einliest und in einem C-String 
speichert.
Lerne wie man daraus einzelne Zeichen auf "0" oder "1" prüft.
Lerne wie man ein Byte in C, Bit für Bit "befüllt".
Fertig.
Gast #7026205
Lesenswert?

Dieter schrieb:
> Ich habe eine Datei die aus ASCII Zeichen besteht. Es steht dort
> halt 110110100. Jede Zahl ist ein Byte.
> In meinem Puffer soll es jedoch Bitweise gespeichert werden, jede Zahl
> ist also ein Bit.

Dann musst du dir überlegen, wie du dein bit abspeichern willst, als 
uint8_t 0 und 1 oder 8 bit in einem byte mit dem zuerst in der Datei 
stehenden bit als LSB ?
1
uint8_t *buf=buffer;
2
while((ch=getc(f))!=-1)
3
{
4
   *buf++=(ch=='1');
5
}
Gast #7027577
Lesenswert?

Den Datentyp "Bit" gibt es in C nicht.
(Naja, ist natürlich abhängig vom Compiler, aber in ANSI-C gibt's kein 
Bit)
Somit kannst du auch kein Array aus Bits definieren/laden/speichern.

Generell kannst du aber eine 16Bit Zahl als 16Bit - BitArray behandeln, 
wenn du willst.
Gast #7040397
Lesenswert?

Ließ eine Zeile in ein char Array, gehe das Array in einer Schleife 
durch und wende auf jedes Zeichen "AND 1" an. So hast du die Bits und 
kannst sie nach belieben weiter verwenden.

Also Grundlagen in Zahlensysteme, Binär und ASCII anschauen.

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