1:ASLL可现实字符
2:.c文件
#include "library.h"
void lib_memset(void *pDst, uint8_t value, uint32_t Len)
{
unsigned char *Dst = (unsigned char *)pDst;
for (uint32_t i = 0; i < Len; i++)
{
*Dst++ = value;
}
}
void lib_memcpy(void *pDst, void *pSrc, uint32_t Len)
{
unsigned char *Dst = (unsigned char *)pDst;
unsigned char *Src = (unsigned char *)pSrc;
for (uint32_t i = 0; i < Len; i++)
{
*Dst++ = *Src++;
}
}
bool lib_memcmp(void *pdat1,void *pdat2, uint32_t len)
{
uint8_t *pdat11 = (uint8_t *)pdat1;
uint8_t *pdat22 = (uint8_t *)pdat2;
uint32_t i;
for(i = 0;i < len;i++)
{
if(*pdat11++ != *pdat22++)
{
return false;
}
}
return true;
}
bool lib_memadd(void *addr,uint16_t len,uint8_t val)
{
uint8_t *pdat = (uint8_t *)addr;
uint16_t i;
for(i = 0;i < len;i++)
{
*pdat++ += val;
}
return true;
}
bool lib_memminus(void *addr,uint16_t len,uint8_t val)
{
uint8_t *pdat = (uint8_t *)addr;
uint16_t i;
for(i = 0;i < len;i++)
{
*pdat++ -= val;
}
return true;
}
bool lib_memmove(void *addr,uint16_t len,uint8_t nums)
{
uint8_t *pdat = (uint8_t *)addr;
uint16_t i;
if (NULL == pdat)
{
return false;
}
while (nums--)
{
for(i = 0;i < len - 1;i++)
{
*(pdat+i) = *(pdat+i+1);
}
}
return true;
}
bool lib_memcmp_const(uint8_t * addr,uint16_t len,uint8_t val)
{
uint8_t *pdata = (uint8_t *)addr;
while (len--)
{
if(*pdata++ != val)
{
return false;
}
}
return true;
}
bool lib_memchange(void *psrc, uint32_t len)
{
if (NULL == psrc || 0 == len)
{
return false;
}
uint8_t *pdat = (uint8_t *)psrc;
uint16_t i;
for(i = 0; i < len /2; ++ i)
{
uint8_t temp = 0;
temp = *(pdat + i);
*(pdat + i) = *(pdat+len-1-i);
*(pdat+len-1-i) = temp;
}
return true;
}
3 .h文件
#ifndef __LIBRARY_H
#define __LIBRARY_H
#include <stdio.h>
#include <stdint.h>
#include <stdbool.h>
void lib_memset(void *pDst, uint8_t value, uint32_t Len);
void lib_memcpy(void *pDst, void *pSrc, uint32_t Len);
bool lib_memcmp(void *pdat1,void *pdat2, uint32_t len);
bool lib_memcmp_const(uint8_t * addr,uint16_t len,uint8_t val);
bool lib_memadd(void *addr,uint16_t len,uint8_t val);
bool lib_memminus(void *addr,uint16_t len,uint8_t val);
bool lib_memmove(void *addr,uint16_t len,uint8_t nums);
bool lib_memchange(void *psrc, uint32_t len);
#endif
可以加入QQ群:687360507
与大伙沟通交流,技术在于分享而进步
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)