编程参考- 如何判断当前系统架构是大端还是小端

不同的平台,使用的大小端可能不同,可以使用程序来判断一下,比如在我的Ubuntu虚拟机上运行如下程序:

#include <stdio.h>



typedef struct {

  int a;

  int b;

  int c;

} Foo_Type;



int main()

{

  Foo_Type bar;

  bar.a = 1;

  bar.b = 2;

  bar.c = 3;



  int * p = (int*)&bar;

  printf("%d %d %d\n", p[0],p[1],p[2]);



  bar.a = 0x12345678;



  printf("0x%X\n", bar.a);



  unsigned char * pc = (unsigned char*)&bar;

  printf("0x%X 0x%X 0x%X 0x%X\n", pc[0], pc[1], pc[2], pc[3]);



  return 0;

}



$ gcc -o test main.c

$ ./test

1 2 3

0x12345678

0x78 0x56 0x34 0x12

首先看到,结构体里的成员,其存放地址,是按照声明的顺序挨个排列的,由低地址到高地址。

然后我们在一个整型中存放数据,4个字节的int类型,从低地址开始打印数据,其存放的是低位的数字。

第一个字节存放的0x78,这是整数0x12345678的最低有效位的数字。

所以这个环境下就是小端的,little endian。

在字节内部,就没有顺序了,0x78放到8个bit里,怎么放怎么读都是一样的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜流冰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值