datein binär einlesen
-
Hallo zusammen,
ich habe ifstream read aus einem Datei glesen und den Wert in einem char test[4] gespeichert. Jetzt steht in test[3]= 68 "D". ICh würde gerne die 68 weiterverarbeiten aber wenn ich atoi (test) nehme kriege ich "D" und nicht die 68. Kann mir jemand helfe?
-
Ganz einfach: Ob da 68 oder D ausgegeben wird ist eine reine Sache wie die Ausgabe formatiert steht. Im Speicher steht da nur der Wert 68. Fazit: Du kannst einfach drauflos rechnen.
-
danke für deinen schnellen antwort. Ich möchte die zahl mit 3 ANDen und deswegen speichere ich zuerst
int test;
dann {in char wert ist mein '68'}
test= atoi (wert);
ich bekomme aber für test immer null
-
Was für ein Test?! - Post mal den Code, den du hast.
-
code:
char byte5 [1];
char byte5Bis7 [3];
ifstream file;
file.open("test.vob",ios::binary);
file.read (byte5,1);so jetzt habe ich in byte[0]= 68 "D" stehen. Ich möchte die 68 mit
3 anden also:
68 & 3;
dafür mache ich
int intWert;
intWert =atoi(byte5);was mache ich falsch
-
borhany schrieb:
code:
char byte5 [1];
char byte5Bis7 [3];
ifstream file;
file.open("test.vob",ios::binary);
file.read (byte5,1);so jetzt habe ich in byte[0]= 68 "D" stehen. Ich möchte die 68 mit
3 anden also:
68 & 3;
dafür mache ich
int intWert;
intWert =atoi(byte5);was mache ich falsch
Ein paar Sachen sind falsch:
- byte5 ist etwas ganz anderes als byte5[0]. Beschäftige dich ein bisschen mit Arrays, um den Unterschied zu lernen.
- atoi macht etwas anderes als du annimmst. Schlage das mal in einer Referenz nach.
- Wenn du cstrings (das heißt char Arrays + C funktionen wie atoi) verwenden willst, musst du beachten, dass cstrings am Ende noch Platz für ein Nullterminierungszeichen brauchen. Da du aber C++ machen willst, hast du sowas gar nicht nötig, weshalb ich hier nicht näher drauf eingehen will.
- Wie schon gesagt, kann man mit char direkt rechnen, wie mit ints auch. Somit ist eine mögliche Lösung:
char foo = 'D'; cout << (foo & 3) << endl; // gibt 0, da 68 & 3 = 0
-
danke für dein ANtwort. Kannst du mir vielleicht sagen wie ich ein
char charWert []= "256" mit einem int intWert = 256 anden kann.
also
char test = charWert & intWert;
Wozu Arrays da sind weiss ich. Ich muss aber ein Wert herauskriegen, der in unterschiedlichen Bytes steckt das ist mein Prblem
-
borhany schrieb:
danke für dein ANtwort. Kannst du mir vielleicht sagen wie ich ein
char charWert []= "256" mit einem int intWert = 256 anden kann.
also
char test = charWert & intWert;
Wozu Arrays da sind weiss ich. Ich muss aber ein Wert herauskriegen, der in unterschiedlichen Bytes steckt das ist mein PrblemDas ist wiederum der Fall, wofür atoi da ist. Oder besser noch stringstream, wenn du die FAQ gelesen hättest. Beide funktionieren aber nicht mit einfachen char Arrays, sondern mit C strings. D.h. du musst dafür Sorge tragen, dass deine char Arrays nullterminiert sind und auch genügend Platz für das Terminierungszeichen vorhanden ist.
edit: Und das wirft dann wieder die Frage auf, warum du mit char Arrays arbeitest und nicht mit std::string?