seth_not@home: C - bytes einer variable auslesen

gudn tach!

mir fehlen die such-begriffe...
mein linker nachbar moechte in c eine float-variable byteweise an irgendeinen controller schicken. die frage ist also: wie kann man eine float-variable in ihre byte-bestandteile zerschneiden? bei integer-variablen (short, long, ...) geht sowas bequem ueber die binaeren operatoren z.b.  den shift-operator. leider geht das nicht bei float.

klar, es gaebe andere wege zum ziel, z.b.

  1. die bytes durch sukzessives geschicktes dividieren eruieren, oder
  2. multiplizieren mit 10^x, bis das komma "hinten" ist, dann type-casting zu long und anschliessendes auslesen.
  3. string-convert...

aber es muss doch auch moeglich sein, einfach die bytes ohne grosse zeitraubende umschweife auszugeben.

prost
seth

  1. hi,

    aber es muss doch auch moeglich sein, einfach die bytes ohne grosse zeitraubende umschweife auszugeben.

    hab das schon lang nicht mehr gemacht, aber es müßte mit nem character-pointer funktionieren, auf die einzelnen bytes zuzugreifen

    mfG,
    steckl

  2. Hallo seth,

    aber es muss doch auch moeglich sein, einfach die bytes ohne grosse zeitraubende umschweife auszugeben.

    Nun, caste den Zeiger auf Deine Float-Variable als Zeiger auf eine Byte-Variable und verwende diese als Array mit sizeof(float) Elementen:

    #include <sys/types.h>  
    #include <stdio.h>  
    #include <stdint.h>  
      
    int main (int argc, char **argv) {  
     float v = 3.141592;  
     uint8_t *p = (uint8_t *)&v;  
     size_t i;  
     printf ("Float-Wert %f hat die Byte-Darstellung 0x", v);  
     for (i = 0; i < sizeof (float); i++) {  
      printf ("%02x", p[i]);  
     }  
     printf ("\n");  
     return 0;  
    }
    

    Viele Grüße,
    Christian

    --
    "I have always wished for my computer to be as easy to use as my telephone; my wish has come true because I can no longer figure out how to use my telephone." - Bjarne Stroustrup
    1. gudn tach!

      Nun, caste den Zeiger auf Deine Float-Variable als Zeiger auf eine Byte-Variable und verwende diese als Array mit sizeof(float)

      ah, genau! sehr schoen! ich danke euch beiden.

      prodest
      seth