我试图打包和解包的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