【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

扫描二维码关注公众号,回复: 4352173 查看本文章

大端机:

12

34

56

78

猜你喜欢

转载自blog.csdn.net/u013066730/article/details/84643938
今日推荐