中科因仑“3+1”工程特种兵精英论坛

标题: 大小端测试 [打印本页]

作者: 伊海    时间: 2014-8-5 15:15
标题: 大小端测试
编写一个函数,测试MCU是大端模式存储还是小端模式存储
  1. /****************************************************************
  2. **  函数名称:LBEndian
  3. **  函数功能:大小端测试函数
  4. **  入口参数:None
  5. **  出口参数:1 or 0
  6. ****************************************************************/
  7. int LBEndian (void)
  8. {
  9.     unsigned int   uiNumber = 0x12345678 ;
  10.     unsigned char  *ucptr   = (void *)0  ;
  11.     /* 将最低位1一个字节赋给ucptr */
  12.     ucptr = (unsigned char *)(&uiNumber) ;
  13.     /* 如果是小段模式,则返回1*/
  14.     if ( 0x78 == (*ucptr) )
  15. {
  16.         return 1 ;
  17.     }  
  18. /* 如果是大端模式,则返回0 */
  19. else
  20. {
  21.         return 0 ;
  22.     }
  23. }
复制代码
通过ucptr = (unsigned char *)(&uiNumber) (好好理解这句程序);截取低地址的存储字节数据,如果低地址存储的是低字节,那么就是小端模式,如果低字节存储的是高字节,那么就是大端模式。ucptr = (void *)0 ,这样做是为了防止野指针的危患。



作者: 还你一世界    时间: 2014-8-5 15:30
不错,涨姿势了
作者: lxe    时间: 2014-8-5 15:40
....。其实,,没明白
作者: 墨奚    时间: 2014-8-10 14:36
还没面对过这个问题
作者: 伊海    时间: 2014-8-10 15:32
墨奚 发表于 2014-8-10 14:36
还没面对过这个问题
常考的题
记住它,它会给你带来好云
作者: 墨奚    时间: 2014-8-10 15:39
{:soso_e116:}   




欢迎光临 中科因仑“3+1”工程特种兵精英论坛 (http://bbs.enlern.com/) Powered by Discuz! X3.4