C'è un trucco per scomporli.
L'invenzione probabilmente risalve a San R. W. Stevens, ma l'attribuzione è incerta :-), in ogni caso eccotela:
Il trucco sta nell'usare il costrutto union per operare una vista su un dato: nel tuo caso basta che dichiaricodice:#include <stdio.h> int main () { union { short s; char c [ sizeof(short) ]; } u; u.s = 0x0102; if (sizeof(short) == 2) { if (u.c[0]==0x01 && u.c[1]==0x02) puts ("big-endian"); else if (u.c[0]==0x02 && u.c[1]==0x01) puts ("little-endian"); else puts ("unknownn"); } else printf ("can't perform my duty: sizeof(short) = %d != 2\n", sizeof(short)); return 0; }
In ogni caso lo scopo di questa funzione è determinare se una macchina è little endian o big endian e non è modificare un dato in modo così "sporco".codice:union { double s; char c [ sizeof(double) ]; } u;
Oregon ha ragione su tutta la linea.
Ciao!

Rispondi quotando