被示例代码混淆以检查字节顺序

时间:2010-11-30 18:48:45

标签: endianness

您好我对此处给出的示例代码感到困惑,以检查机器是小端还是大端:

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
    }
}

这里给出的关于小和大字节序的描述:

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

LE机器上的第二个链接说0x1234作为0x34 0x12存储在内存中,但是如果第一个字节是0x12,则第一个链接中的isLittleEndian()函数返回true。这不是第二个环节的矛盾吗?如果没有,那么我误解了什么?

1 个答案:

答案 0 :(得分:2)

不,如果第一个字节是0x12,则函数返回 false 。这是应该的,并且与字节序的描述一致。