C++ endian

Sekcia: Programovanie 20.04.2011 | 00:25
Martin   Návštevník
Nazdar,

dnes som sa zacal zaoberat s big endian a little endian. Opisal som program z knihy Profesionalne Linux programovani aplikaci a po skompilovani som dospel k tomu ze mam big endian. To by bolo aj fajn ked ako vystup mi hodilo toto:

0xdeadbeef

[0] = 0xffffffef
[1] = 0xffffffbe
[2] = 0xffffffad
[3] = 0xffffffde

Prikladam zdrojovy kod.

Podla big endian by mal byt vystup skor
[0] = 0xffffffde
[1] = 0xffffffad
[2] = 0xffffffbe
[3] = 0xffffffef

Viete mi niekto vysvetlit kde moze byt chyba? Alebo som ja zle pochopil endian ?

Dakujem :)
    • Re: C++ endian 20.04.2011 | 01:19
      Martin   Návštevník
      Nasiel som jednu chybu ma tam byt:

      static inline int little_endian(){
      int endian = 1;
      return (0==(*(char*)&endian));
      }

      no stale sa nic nezmenilo. Este som zabudol podotknut ze mam CPU Intel EE8400 64-bit. Preto by som mal mat big endian :)
      • Re: C++ endian 20.04.2011 | 01:49
        Avatar Fridolín Pokorný Fedora 21  Používateľ
        Ako si dospel k nazoru, ze by si mal mat big endian? Inac vyslo ti to spravne, Intel procesory (aj z historickych dovodov) su little endian.
        • Re: C++ endian 20.04.2011 | 13:24
          WlaSaTy   Návštevník
          Niektoré procesory of Intelu boli aj Big endian (Xeon, Itanium) a dokonca robil aj endian less (ARM je schopný pracovať v oboch režimoch). Ale tie sa nedávali do týchto lacných desktopov a notebókov. Takže, súhlas.