#include<stdio.h>
#include<string.h>
int main(int argc, char const *argv[])
{
//memcpy拷贝时逐字节拷贝
int num = 0x12345678;//大端模式下:在内存中存储为:0x78 0x56 0x34 0x12
char buf1[4]={0};
char buf[4]={0};
memcpy(buf1,&num,4);
printf("%#x %#x %#x %#x\n",buf1[0],buf1[1],buf1[2],buf1[3]);//0x78 0x56 0x34 0x12
printf("%#x\n",*((int *)buf1));//0x12345678
//大端模式存储(发送):
buf[0] = (num >> 24) & 0xFF;
buf[1] = (num >> 16) & 0xFF;
buf[2] = (num >> 8) & 0xFF;
buf[3] = num & 0xFF;//存放数据低位0x78
printf("%#X %#X %#X %#X\n", buf[0], buf[1], buf[2], buf[3]);//0x12 0x34 0x56 0x78
printf("%#X\n",*((int *)buf));//0x78563412
printf("%#X\n",buf[3] | buf[2]<<8 | buf[1]<<16 | buf[0]<<24);//0x12345678
//小端存储(发送):
memcpy(buf,&num,4);
printf("%#X %#X %#X %#X\n", buf[0], buf[1], buf[2], buf[3]);//0x78 0x56 0x34 0x12
printf("%#X\n",*((int *)buf));//0x12345678
printf("%#X\n",buf[0] | buf[1]<<8 | buf[2]<<16 | buf[3]<<24);//0x12345678
return 0;
}
内存拷贝及大小端发送接收总结
于 2024-06-27 10:02:01 首次发布