我的理解:
内存是以字节为单位的,一个字节是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