c语言库函数
发布日期:2021-06-29 05:35:28 浏览次数:3 分类:技术文章

本文共 3337 字,大约阅读时间需要 11 分钟。

1:

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 
#include
#include
//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

与大伙沟通交流,技术在于分享而进步

转载地址:https://blog.csdn.net/zhi_Alanwu/article/details/104836869 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:算法(2) uart 分包-j解包函数 系列代码
下一篇:ble原理(3) 广播类型

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月27日 04时07分03秒