关于字节序的问题
如何知道一台机器的字节序?是大端在前还是小端在前?
----------------解决方案--------------------------------------------------------
没人知道吗?
----------------解决方案--------------------------------------------------------
int kelifei=100;
char *p;
p= &kelifei;
for(int i=0;i<2;i++)
printf("%d",p[i]);
----------------解决方案--------------------------------------------------------
如果int不是2个字节呢
还应该先测试整型占几个字节
----------------解决方案--------------------------------------------------------
大端模式(big endian)和小端模式(little endian)指的是数据在计算机体系的存储模式,由于存在众多的芯片体系,如x86, power pc, arm等等,由于各个厂家对数据存储的规定不一样,故如果代码从一个系统移植到另一个系统时有可能遇到模式混乱的问题。
例如用一个字长表示1,Intel体系是采用小端模式的,存储为00000000,00000001,低字节放在低地址位;若体系采用的是大端模式,则存储为00000001,00000000,低字节放在高地址位。
了解这一点后,就不难用c语言通过对低字节的强制转换实现对大端小端的判断了。
unsigned int nTest = 0x11223344;
char *p = (char*)&nTest;
if(*p == 0x44)
printf("small mode");
else
printf("big mode");
----------------解决方案--------------------------------------------------------
ths !
----------------解决方案--------------------------------------------------------