2:.c文件
#include "library.h"
//U8 lib_int2string(U32 number, U8 *char_s)
//{
// U32 i = 0, j;
// U8 chTemp;
//
// while (number != 0)
// {
// char_s[i] = '0' + number % 10;
// i ++;
// number /= 10;
// }
// char_s[i] = '\0';
// for (j = 0; j < i / 2; j ++)
// {
// chTemp = char_s[j];
// char_s[j] = char_s[i - 1- j];
// char_s[i - 1- j] = chTemp;
// }
// return i;
//}
/**
* @Description - 初始化内存函数,以字节为单位
*
* @param[in] - pdst : 目标地址.
* @param[in] - psrc : 源地址.
* @param[in] - psrc : 源地址.
*
* @return - none.
*/
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;
}
}
/**
* @Description - 内存拷贝函数,以字节为单位
*
* @param[in] - pdst : 目标地址.
* @param[in] - psrc : 源地址.
* @param[in] - psrc : 源地址.
*
* @return - none.
*/
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++;
}
}
/**
* @Description - 数组对比函数,对比两数组是否相等
*
* @param[in] - pdat1 : 比较地址1.
* @param[in] - pdat2 : 比较地址2.
* @param[in] - len : 字节长度.
*
* @return - true-两数组相等 false-两数组不相等.
*/
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;
}
/**
* @Description - 判断某段内存是否都为指定的值
*
* @param[in] - pdata : 数值指针.
* @param[in] - len : 字节长度.
* @param[in] - val :
*
* @return -比较结果: true-都是指定值 false-有非指定值
*/
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>
//uint8_t lib_int2string(uint32_t number, uint8_t *char_s);
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
与大伙沟通交流,技术在于分享而进步