菜鸟求教H火源计划问题,盼好心人回答,不胜感...

本帖子已过去太久远了,不再提供回复功能。关于字节序的有关问题,盼来解答,不胜感激_读书人
关于字节序的有关问题,盼来解答,不胜感激
&来源:读书人网&【读书人网():综合教育门户网站】
关于字节序的问题,急盼大虾来解答,不胜感激#include stdio.hint IsLittleEndian(){unsigned short int i
关于字节序的问题,急盼大虾来解答,不胜感激#include &stdio.h&int IsLittleEndian(){unsigned short int i = 1;return (1 == *((char*)&i));}int main(){if(IsLittleEndian()){printf(&Little Endian.\n&);}else{printf(&Big Endian.\n&);}}如上的代码。哪位大虾可以详细的解释一下函数IsLittleEndian()呢?不胜感激!![解决办法]设short占2个字节。地址是0x00 0x01如果系统是little endian的,则对于short i = 1;0x00 处存的是1 ,0x01处存的是0。如果是big endian,0x00 存 0, 0x01 存1。*((char*)&i ,得到低地址处1个字节的内容,如果是1,说明是little endian ,不是1,则为bigendian[解决办法]return (1 == *((char*)&i));先(char*)强制转化成字符类型,是把&i(这个可是2个字节的哦)这个一强制转化后char*就变成指向低字节的那个指针再在最外面加个*,指向指针指向的那个低字节[解决办法]1 == *((char*)&i)是指 将变量i取地址 然后转化为(char*)型 最前面的*是取这个地址指向的内容 就是判断字节的存储是低位存储 若将此函数变为下面的话 那么运行结果就是big Endian 说明int型的是高位存储int IsLittleEndian(){ &char i = '1';return (1 == *((int*)&i));}

参考资料

 

随机推荐