wert aus zeiger lesen
-
Hallo,
ich hoffe ich bin richtig hier. Meine Frage ist. Ich habe mit ifstream ein 14 byte binär wert in einem char* buffer = new char [14] gespeichert.
Das Wert ist aus einem Datei als binär ausgelesen
Jetzt möchte ich die ersten 4 bytes in einem anderen Var speichern.
Meine Frage wie ist das möglich?
-
memcpy, zuweisen...
-
Danke, das ging ja sehr schnell. Ich habe noch eine Frage:
und zwar ich habe mit ifstream diesen wert binär aus einem Datei kopiert. Also muss es ja aus lauter 1 und 0 betehen aber es ist leider nicht so
woran liegt es
-
danke für so ein schnellen antwort eine weitere Frage ich möchte aber ab fünften byte kopieren also nicht die ersten vier.
Kannst du mir auch vielleicht sagen wie das gehen soll
-
Binär ist hier nicht im Sinne von Dualzahlen sondern als Hexazahlen gemeint.
-
Ja, danke mein denkFehler.
-
Für sowas gibt es reinterpret_cast.
z.B. ein int vom fünften Byte an:
int val=*reinterpret_cast<int*>(buffer+4);
-
Ok diese Zahl ist ja hexadezimal aber ich möchte es ANDen dafür bruache ich ja den binär wert oder wie kann ich es sonst lösen
-
Außerdem habe ich auch ein wert -70 drine also -70 '°' das darf doch nicht sein oder mache ich was falsch
-
Das mit den Zahlensystemen hast du noch nicht ganz verstanden...
der Computer speichert Werte letztenendes meist binär, aber das muss dich gar nicht interessieren. Dieselbe Zahl kann man in verschiedenen Zahlensystem unterschiedlich darstellen, aber dadurch ändert sich der Wert der Zahl nicht...Und wieso sollte -70 nicht möglich sein? Das liegt im Wertebereich von int.
-
Ok du hast die zahl liegt schon im bereich int ich habe aber die datei binär eingelesen und ich möchte die zahl ANDen wie soll das mit -70 gehen außerdem ist noch dieses '°' zeichen dahinter
-
Verwende bitte Satzzeichen.
borhany schrieb:
ich möchte die zahl ANDen wie soll das mit -70 gehen
Ganz normal mit
operator&. Auch -70 besitzt eine Binärrepräsentation (mit führender 1).borhany schrieb:
außerdem ist noch dieses '°' zeichen dahinter
Das ist doch ein Problem des Parsens, nicht der Binärdarstellung. Du interpretierst eben nur die Zeichen davor als Zahl.
-
Jetzt willst du deiner CPU nicht mal das Verknüpfen von Zahlen überlassen :<
-
borhany schrieb:
Ok du hast die zahl liegt schon im bereich int ich habe aber die datei binär eingelesen und ich möchte die zahl ANDen wie soll das mit -70 gehen außerdem ist noch dieses '°' zeichen dahinter
Das sind Dinge, die überhaupt nichts miteinander zu tun haben.
Die Binärdarstellung von der Zahl -70 ist (bei 32 Bit):
11111111111111111111111110111010 (siehe dazu auch Zweierkomplement)Wenn es sich aber um Text handelt (d.h. du öffnest die Datei in einem Texteditor und siehst dort "-70°"), sieht das ganz anders aus. Siehe dazu: ASCII
Binär sehen diese vier Zeichen so aus:
10110000001100000011011100101101Wenn man das als ein 32-Bit-int interpretieren würde, entspräche das der Zahl -1339017427.
Du musst zwischen Text und Binärzahlen (oder wie du es sonst nennen willst) unterscheiden.
-
danke für die antworten. Ich habe meine Frage glaub ich falsch gestellt und zwar ich wollte wissen ich speichere die zahl als ein char wert wie soll ich ein char wert ANDen
-
Brauchst du etwa eine Zeichenkette aus chars in eine Zahl umsetzen? Dafür gibt es mehrere Möglichkeiten. Du kannst zB unter anderem C-Funktionen wie atoi() benutzen, oder das lexical_cast<> aus Boost library
Oder hab ich die frage gar nicht verstanden? Auf jeden Fall, man kann Debugger verwenden, um zu sehen, was für den Wert eine Variable in der Realität hat.
-
borhany schrieb:
danke für die antworten. Ich habe meine Frage glaub ich falsch gestellt und zwar ich wollte wissen ich speichere die zahl als ein char wert wie soll ich ein char wert ANDen
int deineZahl=10; char deinChar=deineZahl; char deinANDwert=123; char deineGeANDeteZahl=deinChar & deinANDwert;
-
borhany schrieb:
Ich habe meine Frage glaub ich falsch gestellt
Ja, hast Du. Zu wenig Infos, kein Code, ...
borhany schrieb:
und zwar ich wollte wissen ich speichere die zahl als ein char wert wie soll ich ein char wert ANDen
Versuch's nochmal. Was willst Du machen? Wo liegt das Problem genau? Kennst Du den entsprechenden Operator & noch nicht?
Du hast -70 erwähnt und Dich gefragt, wie das sein kann. Nun, der Wertebereich von char kann auch negative Zahlen umfassen, muss er aber nicht. Ob char vorzeichenbehaftet oder vorzeichenlos ist, kommt auf deinen Compiler und die verwendeten Optionen an.
Gruß,
SP
-
Er will vermutlich die Zahl erstmal aus dem C-string rausholen und in einen integer casten. Stichwort: atoi( char * )
dann will er diese Zahl mit einer anderen Zahl "AND"en (*gg*).
Stichwort: int MyANDedInteger = Zahl1 & Zahl2;