003
27.10.2004, 23:01 Uhr
Hans
Library Walker (Operator)
|
Zitat von Mr. T: |
Noch was:
wenn ich z.B.:
double x = 239.234;
habe, wie packe ich diese Zahl sinnvoll und gebe sie als Sedezimales char aus?
so:
cout<<(char)x<<endl;
bekomme ich letztlich nur eine Ganzzahl...
|
Hi,
ich weis jetzt zwar nicht genau, was Du in diesem Zusammenhang unter "packen" verstehst, aber wenn ich Dich ansonsten richtig verstehe, willst Du die hexadezimale Darstellung jener Bytes haben, die die double-zahl im Speicher repräsentieren, richtig? Wenn ja, das hatten wir doch kürzlich schon mal mit int-zahlen; (- dabei sind wir dann auf die Endianproblematik gegekommen. ) Also mal kurz zusammengefasst: Laut IEEE besteht der Datentyp double aus 8 Byte: ein Bit für das Vorzeichen der Zahl, 16 Bit (wenn ich nicht irre) für den Exponenten, und der Rest für die Mantisse. An diese Bytes kommst Du mit dieser Konstruktion: (ungetestet!)
C++: |
union ZAHL { double D; char DC[sizeof(double)]; } Z;
// Zahl schreiben Z.D = 123.456
// Zahl lesen for (j=0; j<=sizeof(double); j++) printf("%02x ", Z.DC[j]);
|
So ungefähr müsste es gehen... - Aber sieh auch nioch mal in dem anderen Thread nach. (Ich hab jetzt keine Lust, danach zu suchen... )
Hans -- Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung. |