介绍
在开始学编程后,我发现在工程中有些 实现小功能的函数 是通用或者说常用的。一般我会将这些模块放到同一个.c文件里,方便拿取。但有时我们会遇到一些问题,比如,我的这个存各种小功能的函数的.c文件存在本地,但我 人在外地 ;或者 忘了文件存储位置 什么的。想了想觉得放到CSDN上怪合适的。以下是我用到过一个的小功能。有新的想法或者意见可以在评论区回复或私聊,我及时修改,大家共同进步。
将ASC码转为数值1
uint8_t ASC_NUM(char *array)
{
uint8_t len=strlen(array);
uint32_t num = 0;
uint8_t i = 0;
for(i=0;i<len;i++)
{
if(array[i]>=48&&array[i]<58)//判断是否为数值
{
num = num*10 + array[i]-48;
}else //返回无效值
{
num = NULL;
break;
}
}
return num;
}
这个函数实现了ASCII值与整型的转换,其本身也非常简单。
- 输入一个字符型的指针;
- 使用strlen获取长度并对指针中的元素转换为数值后乘十累加;
- 返回结果或者当这个指针中存在不属于0-9所对应的ASCII值时返回NULL。
当然,有人可能会注意到这里我使用了str系列函数,使用这个函数需要包含string.h文件。如果不想使用这个函数的话,就要想办法确定数据的长度了。
还有就是,uint8_t是8位无符号整型的别名。以此类推,uint16_t对应16位无符号整型,uint32_t对应32位无符号整型。大家可以按照自己的程序对数据类型进行修改。
目前来看,这个函数似乎还是有改进空间的,欢迎大家留言讨论,共同进步。
对了,还有一件事,咱们写代码严禁 盲目照搬 哈,这样是不会进步的。
结语
本人社恐,CSDN新人一枚,请大家多担待。平时会经常在CSDN上搜一些东西。
ASCII码表中48-57也就是16进制0x30到0x39对应数字0到9,此函数的功能正是基于此实现的 ↩︎