初级会员

- 积分
- 62
- 金钱
- 62
- 注册时间
- 2015-9-12
- 在线时间
- 0 小时
|
5金钱
int NMEA_Str2num(u8 *buf,u8*dx)
{
u8 *p=buf;
u32 ires=0,fres=0;
u8 ilen=0,flen=0,i;
u8 mask=0;
int res;
while(1) //得到整数和小数的长度
{
if(*p=='-'){mask|=0X02;p++;}//是负数
if(*p==','||(*p=='*'))break;//遇到结束了
if(*p=='.'){mask|=0X01;p++;}//遇到小数点了
else if(*p>'9'||(*p<'0')) {ilen=0; flen=0; break;}//有非法字符
if(mask&0X01)flen++;
else ilen++;
p++;
}
mask|=0X02 , mask|=0X01,这两句中,mask 为什么要和0X02,0X01或一下?
|
最佳答案
查看完整内容[请看2#楼]
从这句话看起走你就知道了,简化一下
if(*p=='.'){mask|=0X01;p++;}//遇到小数点了
else if(*p>'9'||(*p<'0')) {ilen=0; flen=0; break;}//有非法字符
......
p++;
|