方法一:取值比较法
int main(int argc, char* argv[])
{
DWORD dwSmallNum = 0x01020304;
if ( * (BRTE *)&DWsALLnUM == 0X04)
{
printf("Small Sequence. \r\n");
}
else
{
printf("Big Sequence. \r\n");
}
}
以上代码中,定义了0x01020304这个十六进制的数,其在小尾方式内存中的存储形式为04030201,取*(BYTE*)&dwSmallNum内存中低地址位的值,如果是小尾方式的话,低地址位就是0x04,如果是大尾方式的话,低地址就是0x01。
方式二:直接转换比较法
int main(int argc, char* argv[])
{
DWORD dwSmallNum = 0x01020304;
if ( dwSmallNum == htonl(dwSmallNum))
{
printf("Small Sequence. \r\n");
}
else
{
printf("Big Sequence. \r\n");
}
}
如果转换后的结果与原值相等,那么就说明是大尾方式,因为转换后的结果是网络字节序,网络字节序等同于大尾方式。