Tag: 序列化

在C中将结构序列化/反序列化为char *

我有一个结构 struct Packet { int senderId; int sequenceNumber; char data[MaxDataSize]; char* Serialize() { char *message = new char[MaxMailSize]; message[0] = senderId; message[1] = sequenceNumber; for (unsigned i=0;i<MaxDataSize;i++) message[i+2] = data[i]; return message; } void Deserialize(char *message) { senderId = message[0]; sequenceNumber = message[1]; for (unsigned i=0;i<MaxDataSize;i++) data[i] = message[i+2]; } }; 我需要将其转换为char *,最大长度MaxMailSize> MaxDataSize用于通过网络发送,然后在另一端反序列化 我不能使用tpl或任何其他库。 […]

以与语言无关的二进制格式序列化数据的最佳方法是什么?

我正在研究一种机制,用于在与语言无关的机制中通过套接字或共享内存传递序列化数据。 我不愿意使用XML,因为这些数据将非常结构化,编码/解码速度至关重要。 拥有一个获得自由许可的优秀C API非常重要,但理想情况下应该支持大量其他语言。 我看过谷歌的协议缓冲区和ASN.1 。 我是在正确的轨道上吗? 还有更好的东西吗? 我应该只实现自己的打包结构,而不是寻找一些标准?

用C序列化double和float

如何在C中序列化双打和浮点数? 我有以下代码来序列化short,int和chars。 unsigned char * serialize_char(unsigned char *buffer, char value) { buffer[0] = value; return buffer + 1; } 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_short(unsigned […]

在C中将字节转换为Int / uint

我有一个unsigned char数组[248]; 填充字节。 像2F AF FF 00 EB AB CD EF ……这个arrays是我的字节流,我将来自UART(RS232)的数据存储为缓冲区。 现在我想将字节转换回我的uint16和int32。 在C#中,我使用BitConverter类来执行此操作。 例如: byte[] Array = { 0A, AB, CD, 25 }; int myint1 = BitConverter.ToInt32(bytes, 0); int myint2 = BitConverter.ToInt32(bytes, 4); int myint3 = BitConverter.ToInt32(bytes, 8); int myint4 = BitConverter.ToInt32(bytes, 12); //… enter code here Console.WriteLine(“int: {0}”, myint1); //output Data… C中是否有类似的function? (没有.net,我使用KEIL编译器,因为代码在微控制器上运行) […]