Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Binärdatei in bits ausgeben

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
29.09.2004, 22:18 Uhr
~Fox
Gast


Hi!
Oben stehts. Wie mach ich das?


Bearbeitung von Pablo:

title changed; du meinst eher Binär...


Dieser Post wurde am 29.09.2004 um 23:09 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
29.09.2004, 22:20 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


meinst du mit bits 000101001010 ...

oder als Hex-Code? Also 00 44 32 FF AB 4D ...
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
30.09.2004, 13:00 Uhr
virtual
Sexiest Bit alive
(Operator)


@Fox
Was stand davor da?

@Pablo
Ich versteh den Titel noch immer nicht und finde es grundsätzlich nicht okay, Postings inhaltlich zu verändern: woher willst Du denn wissen, was Fox gemeint hat? Entweder war der Originaltitel eindeutig (dann hätte es keine Änderung gebraucht), oder es ist mehrdeutig, dann ist eine Ännderung von jemanden anderen als Fox schlicht und ergreifend fehl am Platz, weil nur Fox weiß, was er gemeint hat.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
30.09.2004, 14:43 Uhr
~Fox
Gast


1. Jede Datei besteht aus bits.
2. Ich will die Datei in bits (101010) aus lesen (in eine 128 bit Variable);
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
30.09.2004, 15:24 Uhr
virtual
Sexiest Bit alive
(Operator)


In ANSI C++ heißen die Stichworte:
- fstream
- bitset
- (vector)

Das folgende Programm macht in etwa das, was du offenbar willst:

C++:
#include <fstream>
#include <bitset>
#include <vector>
#include <algorithm>

typedef std::bitset<128> int128_t;

int main() {
    /* Hier kommen unsere bits rein */
    std::vector<int128_t> bits;

    /* Das Öffnet die Datei binär */
    std::ifstream datei("bftb.cpp", std::ios::binary|std::ios::in);

    /* Hier lesen wir bis zum bitteren Ende der Datei */
    while (datei) {
        int128_t bit_group; // 128 Bits
        for(int i=0; i<16 && datei; ++i) {
            bit_group <<= 8; // Platz für die nächsten 8 bit
            unsigned char c;
            datei.read(&c, 1);  // 8 Bit von Datei lesen
            if (datei) bit_group |= int128_t(c); // Bits in die Bitgruppe einfügen
        }
        bits.push_back(bit_group);
    }

    /* Output, kann auch einfacg ein std::copy sein... */
    for(std::vector<int128_t>::const_iterator i=bits.begin(); i!=bits.end(); ++i) {
        std::cout<<*i<<std::endl;
    }
}


Beachte
1. int128_t ist ein Typedef für ein bitset und erlaubt damit keine arithmetischen Operationen
2. In welcher Reihenfolge die Bits in einem int128_t stehen, sei Dir überlassen, hier gibt es verschiedene Herangehensweisen.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)

Dieser Post wurde am 30.09.2004 um 15:26 Uhr von virtual editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
30.09.2004, 17:27 Uhr
Pablo
Supertux
(Operator)



Zitat von virtual:

Ich versteh den Titel noch immer nicht und finde es grundsätzlich nicht okay, Postings inhaltlich zu verändern: woher willst Du denn wissen, was Fox gemeint hat? Entweder war der Originaltitel eindeutig (dann hätte es keine Änderung gebraucht), oder es ist mehrdeutig, dann ist eine Ännderung von jemanden anderen als Fox schlicht und ergreifend fehl am Platz, weil nur Fox weiß, was er gemeint hat.


Ich ändere die Postings sonst nie, aber ich wenn ich in Google den Begriff "Bunärdatei" eingebe, bekomme ich gar keine Ergebnisse. Und Da Bunär ein Tippfehler ist und vielleicht gute Antworten hier entstehen, hab ich es geändert, so dass man dieses Thread auch mit der Such-Funktion erreicht wird.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 30.09.2004 um 22:23 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
30.09.2004, 17:47 Uhr
virtual
Sexiest Bit alive
(Operator)


@Pablo
Okay, das ist dann schon richtig von Dir gewesen.

@Fox
Willst Du dann auch mit 128 Bits rechnen?? Wenn ja, welche Rechenoperationen?
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
30.09.2004, 21:34 Uhr
~Fox
Gast


Sorry war ein Tippfehler.
Ich benutze für die 128bit variablen gmp und C. Deshalb hilft mir der Code auch nicht viel weiter. Wie kann ich auf die einzelnen bits eines bytes zugreifen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
30.09.2004, 22:02 Uhr
Hans
Library Walker
(Operator)


Hi,

wenn Du auf einzelne Bits zugreifen willst, musst Du mit den binären Operatoren die Bits die Du prüfen willst aus dem Byte isolieren. Wenn Du beispielsweise testen willst, ob das 5. Bit gesetzt ist, machst Du das so:

C++:
char c=3a;

if (c & 0x20 )
   printf ("Bit 5 ist gleich 1\n");
else
  printf ("Bit 5 ist gleich 0\n");


Dieses Beispiel ist C; - wie Du das bei gmp machen musst, weis ich nicht. Dazu sollte aber in der Anleitung von gmp was stehen...

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
30.09.2004, 22:08 Uhr
~Fox
Gast


Ich brauch das aber für alle bits und nicht nur für bit 5!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: