如下实例程序:
-Linux(Ubuntu)
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
void byteorder()
{
union
{
short value;
char union_bytes[sizeof(short)];
}test;
test.value=0x0102;
if((test.union_bytes[0]==1)&&(test.union_bytes[1]==2))
{
printf("big endian!\n");
}
else if((test.union_bytes[0]==2)&&(test.union_bytes[1]==1))
{
printf("small endian!\n");
}
else
{
printf("error!\n");
}
}
int main(void)
{
byteorder();
return 0;
}
输出结果:
- windows
#include <cstdio>
#include <iostream>
using namespace std;
int main()
{
int a=0x11223344;
char *ptr; ptr=(char *)&a;
if(*ptr=0x11){
cout<<"大端字节序"<<endl;
}else if(*ptr=0x44)
{
cout<<"小端字节序"<<endl;
}else{
cout<<"未知,error"<<endl;
}
return 0;
}
- 用位运算求解(效率高)