Gast
#589069
Hallo, folgendes Vorhaben habe ich:
Ich habe eine Doublezahl
z.B.
double dWert = 230.43;
Jetzt möchte ich gerne sehen, wie diese im Speicher dargestellt wird.
Leider weiß ich nicht so recht, was die C-Casting Operatoren machen...
Ich schreibe jetzt mal, wie ich es intuitiv machen würde und freue mich
auf eure Korrekturen:
Folgende Programmzeilen sollen
1. einen Pointer auf den Anfang der Zahl darstellen.
da ich byteweise den Speicher auslesen möchte, halte ich unsigned char
für sinnvoll.
2. Zählvariable deklarieren, da ich ja nacheinander alle Bytes der
Doublezahl durchwandern möchte.
3. Jetzt weise ich meinem Pointer die Adresse der Double zu.
Hierzu caste ich zuerst auf ein void*, dass keine komischen Umrechnungen
und Rundungen durchgeführt werden (wie gesagt: ich weiß leider nicht,
was die Casting operatoren machen)
Dann caste ich auf unsigned char*, da ich ja eine unsigned char Pointer
Variable habe.
4. Double Zahl = 64 Bit = 8 Byte-> schleife über i = 0..7
5. Gib Speicher an Adresse hexadezimal aus und erhöhe diese Adresse
insgesamt 8 mal...
Könnte ich das irgendwie so machen, oder ist das ganz falsch?
unsigned char * pU; // Pointer auf den Anfang der Zahl
int i;
pU = (unsigned char *) ((void*) &dWert);
for (i = 0; i < 8; i++)
{
printf( "%x ", *(pU ++));
}
Vielen Dank für Korrekturen...