两种判断主机字节序的例子.
示例一:
下面一段代码是C语言判断主机字节序的示例程序。
#include <stdio.h>
int main(int argc, char ***argv)
{
union {
short s;
char c[sizeof(short)];
}un;
un.s=0x0102;
if(2 == sizeof(short))
{
if(un.c[0] == 1 && un.c[1] == 2)
printf("Big-edian\n");
if(un.c[0] == 2 && un.c[1] == 1)
printf("Little-edian\n");
else
printf("Unknown type\n");
}
else
printf("sizeof(short)=%d\n",sizeof(short));
return 0;
}
示例程序中主要利用了C语言中union的特性。示例二:
一个封装好的函数.
int byteorder()
{
unsigned int x;
unsigned char *p;
x = 0x01020304;
p = (unsigned char *)&x;
switch (*p) {
case 1:
return (1); /* BIG_ENDIAN */
case 4:
return (2); /* LITTLE_ENDIAN */
default:
return (0);
}
}