嵌入式基础知识之大小端字节序

一、基础知识

最高内存地址 0xFFFFFFFF

栈区(从高内存地址,往低内存地址发展。即栈底在高地址,栈顶在低地址)

堆区(从低内存地址 ,往 高内存地址发展)

最低内存地址 0x00000000

二、什么是字节序

字节序,简单来说,就是指的超过一个字节的数据类型在内存中存储的顺序,那么就很明显了,像char这样的类型,肯定不存在字节序的问题了。
例如:0x12345678,其中0x12为高地址位,0x78为低地址位。

三、字节序分为哪几类

1.大端字节序:

 高位字节数据存放在低地址处,低位数据存放在高地址处;

2.小段字节序:

 高位字节数据存放在高地址处,低位数据存放在低地址处;

如图
在这里插入图片描述

四、大小字节序的判断:

方法 一:

 #include <stdio.h>
 15        
 16 int main (int argc, char **argv)
 17 {      
 18     unsigned int    a  = 0x12345678;
 19     unsigned char  *c  =  (unsigned char *)&a;
 20   
 21     if(*c == 0x78)
 22         printf("Little endian\n");
 23     else if(*c == 0x12)
 24         printf("Big endian\n");
 25     else         
 26         printf("Not know");
 27     return 0;  
 28 }              

方法二:

14 #include <stdio.h>
 15 union u_is_lsb
 16 {      
 17     unsigned int  a;
 18     unsigned char b;
 19 }is_lsb;  
 20 int main (int argc, char **argv)
 21 {      
 22     is_lsb.a = 0x12345678;
 23     if(is_lsb.b == 0x78)
 24         printf("Little endian!\n");
 25     else if(is_lsb.b == 0x12)
 26         printf("Big endian!\n");
 27     else       
 28         printf("Not know!");
 29     return 0;  
 30 } 

五、网络字节序:

 TCP/IP协议传输数据时,字节序默认大端。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

XiaoCheng'Blog

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

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

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

打赏作者

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

抵扣说明:

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

余额充值