Detecting Your Machine’s Endian

Detecting Your Machine’s Endian

The term endian refers to the way a computer architecture stores the bytes of a multi-byte number in memory. If bytes at lower addresses have lower significance (Intel microprocessors, for instance), this is called little endian ordering. Conversely, big endian ordering describes a computer architecture in which the most significant byte has the lowest memory address. The following portable program detects the endian of the machine on which it is executed:

   void main()   {    union probe{       unsigned int num;      unsigned char bytes[sizeof(unsigned int)];   };    probe p = { 1U }; //initialize first member of p with unsigned 1    bool little_endian = (p.bytes[0] == 1U); //in a big endian architecture, p.bytes[0] equals 0    }


Share the Post: