字节序的表示方法有两种:
(1)字节序结构:
程序先建立一个公用体类型address,用于测试字节序,成员value是int 类型变量,可以通过成员byte来访问value变量的高字节和低字节。
typedef union{
unsigned int value;
unsigned char byte[2];
}addr;
(2)变量声明,声明一个to类型的变量typeordr,给变量value赋值为0xabcd,由于在类型addr中,value和byte成员共享同一块内存,所以可以通过byte的不同成员来访问value的高字节和低字节。
(3)程序:
int main(int argc,char *argv)
{
addr typeorder;//一个to类型的变量
if(typeorder.byte[0] == 0xcd &&typeorder.byte[1]==0xab){
printf(“Low endian bye order\n”);
printf(“byte[0]:0x%x,byte[1]:0x%x\n”,typeorder.byte[0],typeorder.byte[1]);
}
/*大端字节序判断*/
if(typeorder.byte[0] == 0xab &&typeorder.byte[1]==0xcd){
printf(“High endian byte order\n”);
printf(“byte[0]:0x%x,byte[1]:0x%x\n”,typeorder.byte[0],typeorder.byte[1]);
}
return 0;
}
1>小端字节序(Little Endian):在表示变量的内存起始地址存放低字节,高字节顺序存放
2>大端字节序(Big Endian):在表示变量的内存起始地址存放高字节,低字节顺序存放。
程序实例:
编写程序来检测下变量在内存中的表示形式,以确定系统中的字节序为大端字节序还是小端字节序。(1)字节序结构:
程序先建立一个公用体类型address,用于测试字节序,成员value是int 类型变量,可以通过成员byte来访问value变量的高字节和低字节。
typedef union{
unsigned int value;
unsigned char byte[2];
}addr;
(2)变量声明,声明一个to类型的变量typeordr,给变量value赋值为0xabcd,由于在类型addr中,value和byte成员共享同一块内存,所以可以通过byte的不同成员来访问value的高字节和低字节。
(3)程序:
int main(int argc,char *argv)
{
addr typeorder;//一个to类型的变量
typeorder.value= 0xabcd;
if(typeorder.byte[0] == 0xcd &&typeorder.byte[1]==0xab){
printf(“Low endian bye order\n”);
printf(“byte[0]:0x%x,byte[1]:0x%x\n”,typeorder.byte[0],typeorder.byte[1]);
}
/*大端字节序判断*/
if(typeorder.byte[0] == 0xab &&typeorder.byte[1]==0xcd){
printf(“High endian byte order\n”);
printf(“byte[0]:0x%x,byte[1]:0x%x\n”,typeorder.byte[0],typeorder.byte[1]);
}
return 0;
}