【问题标题】:Confused by example code to check endianness对检查字节顺序的示例代码感到困惑
【发布时间】:2010-11-30 18:48:45
【问题描述】:

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

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。这不是与第二个链接矛盾吗?如果不是,那我误解了什么?

【问题讨论】:

  • 您的第一个链接是对您拥有的文件的本地引用...

标签: endianness


【解决方案1】:

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

【讨论】:

  • 对,如果样本写得很清楚,那就是return (*tempAddress != 0x12)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-01
  • 1970-01-01
  • 2011-06-25
  • 1970-01-01
  • 2015-12-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多