memcpy()之小端模式

编程入门 行业动态 更新时间:2024-10-25 10:33:23

memcpy()之小端<a href=https://www.elefans.com/category/jswz/34/1771241.html style=模式"/>

memcpy()之小端模式

函数原型

void memcpy(voiddestin, const void *src, size_t n);

功能

由src指向地址为起始地址的连续n个字节的数据复制到以destin指向地址为起始地址的空间内。

头文件

#include<string.h>

返回值

函数返回一个指向dest的指针。

例1:如果用来复制字符串,输出的顺序是正常的

#include<stdio.h>
#include<string.h>
int main()
{char* s="1a2b3c4d";char ch[20];memcpy(ch,s,strlen(s));ch[strlen(s)]='\0';//因为从d[0]开始复制,总长度为strlen(s),d[strlen(s)]置为结束符printf("%s",d);return 0;
}
//输出结果为1a2b3c4d

例2:如果用来复制整形(多字节数据),输出结果是逆向的

#include <stdio.h>
#include <string.h>
int main()
{int sh=0x1a2b3c4d;char ch[4];memcpy(ch,&sh,4);printf("%2x%2x%2x%2x\n",ch[0],ch[1],ch[2],ch[3]);return 0;
}
//输出结果为4d3c2b1a


其原因在于,计算机在存储整形数0x1a2b3c4d时,采用的小端模式,即低位在左,高位在右,4d为低位放在低地址,1a高位放在高地址:

地址位0x1d9656c00x1d9656c10x1d9656c20x1d9656c3
数据4d3c2b1a

所以拷贝后输出顺序是反着的。而字符串的存储则是正常顺序(1a到4d从左往右依次存放),所以输出也是正常顺序。

更多推荐

memcpy()之小端模式

本文发布于:2023-11-16 18:25:27,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1629750.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:模式   memcpy

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!