Speicher auslesen



  • Hi,

    ich moechte ein double wert einlesen und diesen so ausgeben, wie er im Speicher hinterlegt ist. Habe dies jetzt testweise mit einem integer probiert.

    Mein Code sieht nun folgendermasen aus:

    #include <stdio.h>
    
    union
    {
    int input_double;
    char c[sizeof(int)*8];     
    }un;
    
    int main (void)
    {
     int i;
     char out;
    
     printf("Bitte double-Zahl eingeben:\n\n");
     scanf("%d",&un.input_double);
    
      for(i=0;i<(sizeof(un.input_double))*8;i++)
      {
       if((out=un.c[i]&1)==0)
       printf("0");
       else
       printf("1");
      }
    
     return 0;
    }
    

    Und jetzt die Frage warum funktioniert das nicht? - Ich habe ja einen string der ganauso groß wie die integer ist. Und dann muesst ich doch jedes element nacheinander ausgeben koennen. Was habe ich falsch gemacht, bzw wie kann ich das am sinpelsten loesen.

    gruss
    troete03



  • Das char[] belegt ja schon 32 Bytes, dein int ist aber nur 4 Bytes lang (sizeof(int) mit 4 angenommen). Das heisst, dass nur die ersten 4 Bytes aus dem char[] mit dem int "geteilt" werden.
    Zudem greifst du in der Schleife nur auf das LSB des jeweiligen chars zu, die anderen 7 Bits ignorierst du komplett.


Anmelden zum Antworten