我試圖打包和解包的GPS座標轉換成字符緩衝區:C:如何做結構打包和解壓縮到char緩衝區?
我有一個gpscoords結構爲這樣:
typedef struct {
char north;
uint16_t lat;
uint16_t lat_frac;
char east;
uint16_t lon;
uint16_t lon_frac;
} gpscoords;
如何打包和解包的gpscoords到緩衝區指向的緩衝區變量?我想在包裝之前爲整數到網絡順序轉換,但我這樣做如下錯誤:
void pack_gpscoords(gpscoords *pos, char *buffer) {
pack_gpscoords(pos, &buffer);
memcpy(buffer, pos, sizeof(pos)+1);
}
void unpack_gpscoords(gpscoords *pos, char *buffer) {
unpack_gpscoords(pos, &buffer);
memcpy(pos, buffer, sizeof(buffer)+1);
}
它們都是無限遞歸函數,這意味着函數會一直調用自己,直到程序最終凍結或者您終止執行。 –
搜索「序列化」並使用與實現無關的類型的bitshifts/bitops。不要只是'memcpy'數據。請注意,對於GPS,您可能擁有NEMA,這是一種ASCII格式。 – Olaf
你確定要無條件遞歸你的功能嗎?無限下降通常不是一個好主意。 – EOF