C语言_判断大小端字节序的方法(联合和指针)

1. 什么是大小端字节序

1.1 什么是字节序

字节序, 即字节在电脑中存放时的序列与输入(输出)时的序列是先到的在前还是后到的在前.
简单的来说是数据的各个字节是从高地址位存储还是低地址位存储. 这个顺序是由电脑的系统决定的.

1.2 什么是小端字节序

小端字节序 : 数据的低位存储在低地址空间, 数据的高位存储在高地址空间. 小端字节序称为LSB

1.3 什么是大端字节序

大端字节序 : 数据的低位存储在高地址空间, 数据的高位存储在低地址空间. 大端字节序称为MSB

通过联合判断大小端字节序

注意: 要清楚有关联合的知识, 联合的大小是该联合内最大的变量大小, 联合中所有变量指向的地址都是联合的起始地址. 所有可用通过联合来进行大小端字节序的判断.
通过联合判断小端字节序如下图所示:
在这里插入图片描述

int is_lsb(void)
{
  union test
  {
    unsigned char a;
    unsigned int b;
  }data;
  
  data.b=0x12345678;
  
  if(data.a==0x78)
    return 1;	//LSB 	小段
  else
    return 0;	//MSB	大端
}

通过指针判断大小端字节序

通过指针判断小端字节序如下图所示:
在这里插入图片描述

int is_lsb(void)
{
  unsigned int data=0x12345678;
  unsigned char *ptr=NULL;

  ptr = (unsigned char *)&data;
  
  if (*ptr==0x78)
    return 1;
  else
    return 0;
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值