c - 用C语言对数据进行编码和解码

标签 c data-structures encoding decoding

我必须编写一个 C 程序来对数据进行编码并将其存储到缓冲区中,以便稍后在该缓冲区上执行某些操作。我有以下结构:

typedef uint64_t time64;
typedef int32_t sint32;

typedef struct
{
    sint32 latitude;
    sint32 longitude;
    int16_t elevation; 
}ThreeDLocation;

typedef struct
{
    uint8_t permission_indices;
    char* data;
    time64 expiry_time;
    ThreeDLocation generation_location;
}data;

我想将data结构编码/解码到单个缓冲区中。我认为这就是所谓的“序列化”和“反序列化”。

有人可以给我一些关于如何解决这个问题的提示吗?

最佳答案

您可以尝试将一个整数指向该结构并以这种方式读出它:

data blockdata;
int* serialdata;
int i;
int n = sizeof(data);
filldata(&blockdata);
serialdata = (int*)&blockdata;

for(i = 0; i < n; i++)
{
   globalbuffer[index++] = serialdata[i];
}

不确定这是否有帮助

关于c - 用C语言对数据进行编码和解码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15951783/

相关文章:

r - 有没有办法初始化或修改允许引用以前的值的列表?

c++ - 遍历对象列表并指向符合特定条件的节点

javascript - 构造 Blob 时的字符串编码

go - Go 如何处理大于一个字节的字符?

c - 带返回终止符的 void 函数

c - 使用C套接字编程获取网页

c# - 多键字典,其中只需要 1 个键来检索对象

c# - 如何正确使用rsa验证数据?

html - 如何使 Sundown 渲染 block 引用(以 ">"开头的行)

c - 为什么我们不能像c中的指针一样增加数组呢?