Chinaunix首页 | 论坛 | 博客
  • 博客访问: 188969
  • 博文数量: 39
  • 博客积分: 1007
  • 博客等级: 准尉
  • 技术积分: 513
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-15 09:15
文章分类

全部博文(39)

文章存档

2012年(2)

2011年(37)

分类: C/C++

2011-07-20 09:55:26

在不同的架构里,数据大小端的判断:

  1. // LittleBigEndian.cpp : 定义控制台应用程序的入口点。
  2. //

  3. #include "stdafx.h"


  4. int _tmain(int argc, _TCHAR* argv[])
  5. {
  6.     union endian {                             //定义一个共用体,共用体里面成员共用同一块内存
  7.         int a;
  8.         char b;
  9.     } Test;

  10.     Test.a = 1;                                //引用共用体成员,给整型数赋值1
  11.     
  12.     if (Test.b == 1)                           //判断另外一个字符型共用体成员的值
  13.         printf("It is little-endian !\n");
  14.     else
  15.         printf("It is big-endian !\n");

  16.     getchar();
  17.     return 0;
  18. }



  19. /*****************************************************************************************

  20. Little-endian stype:

  21. address:    0x00000000    0x00000001    0x00000002    0x00000003
  22. int   a:    01            00            00            00
  23. char  b:    01            00



  24. Big-endian stype:

  25. address:    0x00000000    0x00000001    0x00000002    0x00000003
  26. int  a:     00            00            00            01
  27. char b:     00            00


  28. 说明:
  29. 在C中,联合体数据成员都是从低地址开始存放的。
  30. 小端:数据低位存储在内存低地址处
  31. 大端:数据低位存储在内存高地址处

  32. *****************************************************************************************/


阅读(1716) | 评论(0) | 转发(0) |
0

上一篇:关于U-Boot源码顶层Makefile

下一篇:堆和栈

给主人留下些什么吧!~~