2010-11-30 15 views
0

Salut, je suis confus par le code exemple donné ici pour vérifier si une machine est peu ou big endian:brouillées par exemple de code pour vérifier boutisme

Little Endian or Big Endian?

int isLittleEndian(void) 
{ 
    unsigned int temp = 0x12345678; 
    char * tempAddress = &temp; 
    if(*tempAddress == 0x12) 
    { 
     return 0; // Indicating False 
    } else { 
     return 1; // Indicating True 
    } 
} 

Versus cette description peu et grande boutisme donnée ici:

http://support.microsoft.com/kb/102025

Le deuxième lien indique sur une machine LE 0x1234 est stocké dans la mémoire comme 0x3 4 0x12, cependant la fonction isLittleEndian() dans le premier lien retourne vrai si le premier octet est 0x12. N'est-ce pas une contradiction du 2ème lien? Si non alors qu'est-ce que j'ai mal compris?

+1

Votre premier lien est une référence locale à un fichier que vous avez ... – Joe

Répondre

2

Non, la fonction renvoie false si le premier octet est 0x12. Ce qui est comme il se doit, et jives avec la description de l'endianness.

+0

À droite, et si l'échantillon était écrit clairement, il suffirait de 'return (* tempAddress! = 0x12)'. – tomlogic