将ASC码转为数值函数

介绍

在开始学编程后,我发现在工程中有些 实现小功能的函数 是通用或者说常用的。一般我会将这些模块放到同一个.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值与整型的转换,其本身也非常简单。

  1. 输入一个字符型的指针;
  2. 使用strlen获取长度并对指针中的元素转换为数值后乘十累加;
  3. 返回结果或者当这个指针中存在不属于0-9所对应的ASCII值时返回NULL。

当然,有人可能会注意到这里我使用了str系列函数,使用这个函数需要包含string.h文件。如果不想使用这个函数的话,就要想办法确定数据的长度了。
还有就是,uint8_t是8位无符号整型的别名。以此类推,uint16_t对应16位无符号整型,uint32_t对应32位无符号整型。大家可以按照自己的程序对数据类型进行修改。
目前来看,这个函数似乎还是有改进空间的,欢迎大家留言讨论,共同进步
对了,还有一件事,咱们写代码严禁 盲目照搬 哈,这样是不会进步的。
还有一件事

结语

本人社恐,CSDN新人一枚,请大家多担待。平时会经常在CSDN上搜一些东西。


  1. ASCII码表中48-57也就是16进制0x30到0x39对应数字0到9,此函数的功能正是基于此实现的 ↩︎

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值