Salve, non riesco a capire come funziona la seguente funzione che rende zero se il sistema è big endian o 1 se è little endin...
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??codice:int endian ( void ) { short magic, test; char * ptr; magic =0xABCD; ptr = (char *) &magic; test = (ptr[1] << 8) + (ptr[0]&0xFF); return (magic == test); }
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);

Rispondi quotando