【C++】大端和小端的理解

我的理解:

内存是以字节为单位的,一个字节是8位,也就是2位的16进制,所以首先将数据转成16进制,比如下面例子中的0x12345678,就表示了4个字节的数据。这里要注意一点,如果将数据改成0x10,那么这个还是4个字节的数据,主要是字节空间是由int所决定的,因此就需要将0x10改成0x00000010。

接着将16进制的2个数一组(正好1个字节)存放到内存中。

具体存放方式有不同机器决定,主要分为大端和小端。首先得记住所有的数据都是从最小位开始排列,比如0x12345678就先从78开始,接着56,34,12,原数据选取方式已经确定,在选取方式上不管大端小端都是一样。接着就看这4个字节的数据是从左边(低位)开始存还是右边(高位)开始存,如果从左边开始78,56,34,12那就是小端;如果从右边开始,那就是12,34,56,78这就是所谓的大端。

功能:从数据源所在地址src开始,拷贝len个字节到dest地址中。

#include <stdio.h>
#include <string.h>
void main()
{
    int n=0x12345678 ;
    char str[10];
    memcpy( str, &n, sizeof(int) );
    for( int i=0;i<sizeof(int);i++ ) //输出显示n在内存中的存储情况,因机器不同,显示有可能不同(大小端机)
        printf("%x\n", str[i]&0xff );
}

运行结果:

小端机:

78

56

34

12

大端机:

12

34

56

78

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值