調べてみたらDegree形式に変換するためのatof()が300バイト以上消費しているようだった。
atoi()を使うだけに書きなおした。(NMEAが少数点以下4桁以内を前提にしている)
float DMMtoDegree(const char *s) { char *p = strchr(const_cast<char*>(s), '.'); if (p == NULL) { return 0.0; } const uint32_t k[] = {10000,1000,100,10,1}; uint32_t i3 = atoi(p+1) * k[strlen(p+1)]; uint32_t i2 = atoi(p-2); uint32_t i1 = atoi(s) / 100; uint32_t i = i1*10000*60 + (i2*10000 + i3); return i / 10000.0 / 60.0; }
(2012/12/13)
---
0 件のコメント:
コメントを投稿