Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » binärdatei

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 <
000
22.07.2003, 10:22 Uhr
~lucky luke
Gast


ich hab ne datei:


C++:
0010 0b01 6400 0064 0000 0000 0000 0502 6400 0064 0000 0000 0000 0703 8900 0189 0000 1000
0000 1204....
....



ich möchte immer byteweise auslesen und dass in einen integer umwandeln und abspeichern.

kann mir jemand helfen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
22.07.2003, 10:51 Uhr
~malte
Gast


immer ein einzelnes Byte? Also, sozusagen 2 Hex-Ziffern?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
22.07.2003, 10:52 Uhr
daredevil
Speicherteufel


richtig so oder
--
tschüss,
DareDevil

Dieser Post wurde am 22.07.2003 um 10:52 Uhr von daredevil editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
22.07.2003, 10:53 Uhr
~lucky luke
Gast


Ja genau, ich möchte ein byte, also 2 hex-werte auslesen und als integer in eine varible speichern
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
22.07.2003, 11:01 Uhr
xodiak



hm, das sollte kein großes Problem darstellen.

Du kannst


C++:
char line[300];
int x[10000];
while((fgets(line, 300, cfp)) != NULL)
{
  for(i = 0; i < strlen(line); i+=2)
  {
    if(strncmp(line[i], " ", 1)) i++;
    x[i/2] = atoi(line[i])*16 + atoi(line[i+1]);
  }
}



probieren.
Müsste so in etwa funktionieren.

greetz xodi
--
There's always one more bug.

Dieser Post wurde am 22.07.2003 um 11:12 Uhr von xodiak editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
22.07.2003, 11:05 Uhr
~lucky luke
Gast


Was heißt denn cfp?
und wie wandle ich von hex nach dezi um? mit sprintf?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
22.07.2003, 11:07 Uhr
xodiak



kuck dir's nochmal GENAU an
Nein, Spaß. Das mit dem Umwandeln hab ich noch eingebaut. Und der cfp ist ein FilePointer:


C++:
FILE * cfp;



--
There's always one more bug.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
22.07.2003, 12:04 Uhr
~lucky luke
Gast


bei mir kommt in der zeile mit dem strncmp und dem atoi ein warning:
"makes pointer from integer without a cast"
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
22.07.2003, 12:10 Uhr
0xdeadbeef
Gott
(Operator)


Nimm Standardfunktionen:

C++:
int byte1, byte2;
fscanf(meine_datei, "%2x%2x", &byte1, &byte2);


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 22.07.2003 um 12:10 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
23.07.2003, 16:33 Uhr
virtual
Sexiest Bit alive
(Operator)


@lucky luke:
der Fehler Rührt daher:

C++:
if(strncmp(line[ i ], " ", 1)) i++;


line[ i ] ist dabei ein char. etwas richtiger wäre:

C++:
if(strncmp(&line[ i ], " ", 1)) i++;


Ist aber gegenüber

C++:
if(line[ i ] != ' ') i++;


die schlechtere Wahl, denke ich
--
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
Seiten: > 1 <     [ 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: