利用ascii码实现c++ switch支持字符串,而不是用结构体与if配合;运行更快。
下面是解析GPS数据demo,在windows与liunx系统下字节计算可能存在几个字节偏差,是整体性的;需要自己测试。
进化方法;将字符串转换成ascii中的十进制进行排列拼接而不是累加。
#include "stdafx.h"
#include "string.h"
int add(char* str) {
int addi = 0;
int len = strlen(str);
for (size_t i = 0; i < len; i++)
{
addi += (int)str[i];
}
return addi;
}
int main()
{
char* temp = "$PRDID";
int adds = add(temp);
printf("add:=%d",adds);
switch (adds)
{
case 394:
printf("$GPGGA");
break;
case 413:
printf("B");
break;
case 410:
printf("C");
break;
case 411:
printf("D");
break;
case 425:
printf("$GPGST");
break;
case 407:
printf("$PRDID");
break;
default:
break;
}
return 0;
}