网站建设资讯

NEWS

网站建设资讯

c语言判断大小端函数 c语言大小端测试

C语言中使用union是怎么判断处理器大小端的

union Charge

为忠县等地区用户提供了全套网页设计制作服务,及忠县网站建设行业解决方案。主营业务为成都网站制作、网站建设、外贸网站建设、忠县网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

{

char arr[2];

short num;

};

int main()

{

union Charge charge;

charge.arr[0] = 1;

charge.arr[1] = 2;

if (charge.num == 0x0201)

{

printf("小端\n");

}

else

{

printf("大端\n");

}

return 0;

}

C语言判断处理器大小端对齐原理

大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中

小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中

上面c是一个共用体,给共用体中的a赋值为1.然后读取b是否为1,当b为1是说明是小端模式,b为0则说明是大端模式。

注意共用体是一个int和一个char,所以才能判断。

用c语言写个函数测试处理器是大端还是小端程序怎么写?

写一个函数判断系统是大端还是小端。若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1.

大端格式:在这种格式中,字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中

小端格式:与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节

联合体union的存放顺序是所有成员都从低地址开始存放。

Int checkCPU ()

{

Union w

{

Int a;

Char b;

}c;

c.a=1;

return (c.b==1);

}

UNIX 网络编程 第一卷 78页 (英文版) 给出了这样一段代码:

PS: 下面代码中的unp.h是Stevens 老大自己定义的一个头文件,具体的代码在这本书的附录里有给出来.

代码

1

2 #include "unp.h"

3

4 int main(int argc ,char ** argv)

5 {

6

7 union {

8 short s;

9 char c[sizeof(short)];

10 }un;

11 un.s = 0x0102;

12 printf("%s\n",CPU_VENDOR_OS);

13

14 if(sizeof(short) == 2)

15 {

16 if(un.c[0] == 1 un.c[1] ==2 )

17 printf("big-endian\n");

18 else if (un.c[0] == 2 un.c[1] == 1)

19 printf("little-endian\n");

20 else printf("unknow");

21 }else

22 printf ( "sizeof(short) = %d\n",sizeof(short));

23 exit(0);

24 }

25


本文名称:c语言判断大小端函数 c语言大小端测试
文章源于:http://cdweb.net/article/hpoiss.html