Salve, non riesco a capire come funziona la seguente funzione che rende zero se il sistema è big endian o 1 se è little endin...
codice:
int endian ( void ) {
short magic, test;
char * ptr;
magic =0xABCD;
ptr = (char *) &magic;
test = (ptr[1] << 8) + (ptr[0]&0xFF);
return (magic == test);
}
A mio parere l'and bit a bit con 255 non serve a niente, in quanto rende il numero contenuto in ptr[0]... e perchè c'è bisogno dello shift di 8??
per vedere se un sistema e little o big endian non basterebbe fare cosi ;
codice:
short nuber = 89, test; // valore che viene rapresentato in un solo byte
char ptr * = &number;
test = ptr[1]; // asegno il valore che è contenuto nella seconda parte del blocco di memmoria se il computer e little endian
return ( test == number);