今天给小伙伴们带来一组实用的代码,可以把逗号和其他字符分隔的字符串转成数字。这个功能还是有一定的应用价值的,有需要的可以用!阅读过程中有什么问题可以后台交流,图片!1功能说明1)主要功能介绍主要功能如下:①求m的n次方,在拼接值的10的n次方时使用。②求逗号的位置功能。③字符转值函数。2)功能说明代码只实现字符到值的转换,并打印转换结果。大家可以在实际使用中根据自己的需要进行修改。代码可以指定保留小数点的位数,Str2Num函数中的参数dx作用不大。2示例代码1)示例代码的说明在代码注释中。#include#include#include#include/*求m的n次方*/uint32_tPow(uint8_tm,uint8_tn){uint32_tresult=1;while(n--){result*=m;}returnresult;}/*获取逗号数在buf中的位置*/uint8_tComma_Pos(uint8_t*buf,uint8_tcomma){uint8_t*p=buf;while(comma){//当遇到'*'或非法字符,没有cxth逗号if(*buf=='*'||*buf<''||*buf>'z'){return0xFF;}if(*buf==',')//找到逗号,调整逗号个数{comma--;}buf++;}returnbuf-p;//移动了多少次,即逗号位置数}/*将字符串转为avalue*/uint32_tStr2Num(uint8_t*buf,uint8_t*dx){uint8_t*p=buf;uint32_tires=0,fres=0;uint8_tilen=0,flen=0,i;//ilen为整数部分的长度,flen是小数部分的长度uint8_tmask=0;intres;//得到整数和小数的长度while(1){if(*p=='-')//是负数{mask|=0x02;p++;}if(*p==','||(*p=='*'))//以逗号或星号结尾{break;}if(*p=='.')//小数point{mask|=0x01;p++;}elseif((*p>'9')||(*p<'0'))//有非法字符{ilen=0;flen=0;break;}if(mask&0x01){flen++;//遇到小数点时,flen小数位长度加1}else{ilen++;//否则整数长度ilen加1}p++;//指向下一个位置buffer}if(mask&0x02)//去掉负号{buf++;}//获取整数部分数据for(i=0;i3)//最多3位小数{flen=3;}//小数位数*dx=flen;//获取小数数据for(i=0;i