Tag: 序列化

用于嵌入式系统的简约人类可读序列化格式解析器

“人类可读的序列化格式”是指YAML , JSON , INI等。 请注意, XML对于我的目的来说太冗长和太不方便了,所以让我们把它作为最后的手段。 格式应将数据存储为“命名键 – 值”对,并允许嵌套和数组。 但是,缺少数组并不重要。 此外,非常感谢类型感知(不仅将数据作为普通字符串返回的能力)。 我真正需要的是一个纯C库,它提供了一个用于解析数据的API(编码是可选的,不太重要)。 在为ARM7编译时,它必须适合大约16-20 KiB。 我已经用Google搜索并在周围徘徊,但找不到符合上述所有要求的工件。

如何将字符值从结构写入串口并转换为整数值?

struct MemoryTag1; typedef struct MemoryTag1{ char a[8]= {‘+’,’0′,’2′,’6′,’.’,’5′,’EA’,’\r’}; // setpoint temperature value char b[8]= {‘-‘,’0′,’2′,’4′,’.’,’5′,’EB’,’\r’}; char c[6]= {‘+’,’0′,’2′,’0′,’EC’,’\r’}; }Memory1; //这是一个消息结构,我想通过串行接口(RS232)传输,然后转换为整数值。 请指导我。

是否可以简单地序列化C ++对象

你可以将一个对象转换为一个hex数据字符串(类似于数据包的发送方式)然后存储它然后再将对象转换回来吗? 我知道它有可能使用C结构,它基本上是C ++中的undearneath对象。 不同系统之间序列化的兼容性并不重要。 auto obj = new Something(); auto objHex = (unsigned char*) obj; // store objHex in like a db // retrieve objHex auto obj2 = new Something(); // allocate *obj2 = (Something*) objHex; // set the dereference

在socket上发送struct时序列化问题

我正在开发基于UDP的客户端/服务器我想从服务器向客户端发送不同的消息。 为每条消息定义了不同的C结构。 我想了解我序列化数据的方式有什么问题。 struct Task { int mType; int tType; int cCnt; int* cId; char data[128]; }; 序列化/反序列化function unsigned char * serialize_int(unsigned char *buffer, int value) { buffer[0] = value >> 24; buffer[1] = value >> 16; buffer[2] = value >> 8; buffer[3] = value; return buffer + 4; } unsigned char * serialize_char(unsigned char […]

C – 将指针数据保存/加载到文件

如果以前曾经问过这个问题,或者有一个我看不到的明显的解决方案,首先道歉。 我发现了一个类似的问题,但我相信我所要求的比前面提到的更进一步。 我的结构如下: typedef struct { int id; char *title; char *body; } journal_entry; 问:如何在不使用固定长度的情况下用C(而不是C ++)编写和加载指向内存的指针内容? 我错误地认为通过将title或body写入文件我会最终得到垃圾数据而不是实际存储的信息? 我不知道日记帐分录的title或body的大小,并且从入口到入口的大小可能会有很大差异。 我自己的阅读建议我需要取消引用指针并分别fwrite结构的每个部分。 但我不确定如何跟踪数据和结构,而不会让事情变得混乱,特别是对于较大的文件。 此外,如果这些不是我打算存储在文件中的唯一项目(例如,我可能希望稍后包含小图像,我不确定如何为了方便而订购文件结构。 另一个(可能是感知的)问题是我在加载数据时使用malloc为body / entry的字符串分配内存当我希望再次加载条目时,我怎么知道为字符串分配多少内存? 我是否需要扩展我的结构以包含int body_len和int title_len ? 非常感激地收到指导或建议。

如何使用msgpack-c正确解压缩和提取数据?

我目前正在尝试在用C编写的项目中使用msgpack。我使用msgpack来序列化结构的内容,然后通过网络发送,然后反序列化为相应的结构。另一边。 我正在尝试做的简明版本: #include #include #include typedef someStruct{ uint32_t a; uint32_t b; float c; } someStruct; int main (void){ someStruct data; /* … Fill ‘data’ with some data for test purposes …*/ msgpack_sbuffer* buff = msgpack_sbuffer_new(); msgpack_packer* pck = msgpack_packer_new(buff, msgpack_sbuffer_write); someStruct* structs = malloc(sizeof(someStruct) * 10); /* … Fill ‘structs’ with members containing test data […]

如何在C中序列化数据

我在c中编写服务器 – 客户端应用程序,需要来回发送一些结构。 如何以独立于平台的方式序列化数据?

什么是将结构写入C中的文件的可移植方式?

我需要以可移植的方式将C struct序列化到文件中,以便我可以在其他机器上读取该文件,并且可以保证我将获得与放入的相同的内容。 文件格式无关紧要,只要它相当紧凑(如果不是为了可移植性问题,写出结构的内存中表示将是理想的。) 有一种干净的方法可以轻松实现这一目标吗?

将trie保留到文件中 – C.

我有一个trie ,我用来做一些字符串处理。 我有一个简单的编译器,它从一些数据生成trie 。 一旦生成,我的trie将不会在运行时更改。 我正在寻找一种方法,我可以将trie保存在文件中并有效地加载它。 我看过sqllite来了解他们如何持久化b-tree但他们的文件格式看起来有点先进,我可能不需要所有这些。 如果有人可以提供一些想法来坚持和阅读这些trie那将会很有帮助。 我用C编程

在C中通过套接字发送struct

我正在开发一个客户端/服务器程序,我的客户端必须向服务器发送消息。 示例消息C结构 : struct Registration { char multicastGroup[24]; pid_t clientPid; }; 用于序列化struct的客户端代码段 struct Registration regn ; regn.clientPid = getpid(); strcpy(regn.multicastGroup, “226.1.1.1”); printf(“PID:%d\n”, regn.clientPid); printf(“MG:%s\n”, regn.multicastGroup); printf(“Size:%d\n”, sizeof(regn)); //Size is 28 data = (unsigned char*)malloc(sizeof(regn)); memcpy(data, &regn, sizeof(regn)); printf(“Size:%d\n”, sizeof(data)); //Size is 4. 用于反序列化数据的服务器代码 if(recvfrom(sd, recvBuf, recvBufSize, 0, (struct sockaddr*)&clientAddr, &len) < 0) { printf("Error receiving […]