解析 HHMMSS 来自 NMEA
Parsing HHMMSS come from NMEA
我在 NMEA 数据 (gpzda) 方面遇到了问题。问题解释如下。
NMEA 数据:$GPZDA,011856.00,17,03,2018,*61
我的解析代码。
char hour[2] = { 0 };
for (int i=0; i < 2; i++) hour[i] = utctime[i];
info.tm_hour = atoi(hour);
char min[2] = { 0 };
for (int i=0; i < 2; i++) min[i] = utctime[i + 2];
info.tm_min = atoi(min);
char sec[2] = { 0 };
for (int i=0; i < 2; i++) sec[i] = utctime[i + 4];
info.tm_sec = atoi(sec);
cout << info.tm_year << " | " << info.tm_mon << " | " << info.tm_mday << " | " << info.tm_hour << " | " << info.tm_min << " | " << info.tm_sec << endl;
代码运行良好,但有时小时值很奇怪,如“126”。我以为“6”是从另一个记忆中添加的。如何解析这些数据才能正常工作?
您应该以零终止字符串,因此声明每个字符串的大小为 3。
char hour[3] = { 0 };
等等
我在 NMEA 数据 (gpzda) 方面遇到了问题。问题解释如下。
NMEA 数据:$GPZDA,011856.00,17,03,2018,*61
我的解析代码。
char hour[2] = { 0 };
for (int i=0; i < 2; i++) hour[i] = utctime[i];
info.tm_hour = atoi(hour);
char min[2] = { 0 };
for (int i=0; i < 2; i++) min[i] = utctime[i + 2];
info.tm_min = atoi(min);
char sec[2] = { 0 };
for (int i=0; i < 2; i++) sec[i] = utctime[i + 4];
info.tm_sec = atoi(sec);
cout << info.tm_year << " | " << info.tm_mon << " | " << info.tm_mday << " | " << info.tm_hour << " | " << info.tm_min << " | " << info.tm_sec << endl;
代码运行良好,但有时小时值很奇怪,如“126”。我以为“6”是从另一个记忆中添加的。如何解析这些数据才能正常工作?
您应该以零终止字符串,因此声明每个字符串的大小为 3。
char hour[3] = { 0 };
等等