说明:这里面涉及到本机字节序和网络字节序的概念。A (本机字节序) ---- 网络字节序 ----B(本机字节序),其中本机字节序就是指机器是大端还是小端,网络字节序,我们都知道网络中会将内容封装成流,比如TCP/IP或者是 ISO,网络字节序是大端模式。引用网上的一张关于大小端的图片
- 将整数存储后再以字符读出进行比较
#include <stdio.h> int main(void) { unsigned int a = 0x12345678; unsigned char *p =(unsigned char *) &a; int i; printf("原输入数据为0x%0x\n", a); printf("存储后再读取的数为0x"); for(i=0;i<4;i++){ printf("%0x", p[i]); } printf("\n"); if(p[0] == 0x12) printf("big edition\n"); if(p[0] == 0x78) printf("little edition\n"); return 0; }
结果输出为:
原输入数据为0x12345678
存储后再读取的数为0x78563412
little edition
- 使用union的共享内存的机制
扫描二维码关注公众号,回复: 3619553 查看本文章#include<stdio.h> union var { char str; int data; }; int main(void){ union var endian; endian.data=0x01020304; if(endian.str==0x01) { printf( "此机器是大端!\n"); } else if(endian.str==0x04){ printf("此机器是小端!\n"); } else{ printf(" 暂无法判断此机器类型!\n"); } }