C# - 用于存储数组/列表的自定义编码系统

时间:2017-01-31 04:21:06

标签: c# arrays xml serialization

所以我已经深入研究了使用Binary Formatter序列化数据,我对此印象深刻。但问题是兼容性。我希望我的序列化数据是可移植的,因此可以通过不同的平台访问。因此,XML序列化似乎就是答案,但生成的文件太大,不需要人类可读性。

所以我考虑创建自己的编码/序列化系统,以便我可以将long[]数组和包含十六进制值的string[]/List<string>写入文件。

我考虑过将所有数组转换为byte [],但我不确定是否应该关注字符文本编码。我只打算序列化/编码包含十六进制和长值的数组。

byte[] Bytes = HexArray.Select(s => Convert.ToByte(s, 16)).ToArray();

将所有数组转换为byte []后,我可以将它们写入文件,同时注意到各个数组的字节偏移量,以便可以恢复它们。

有关更好方法的任何想法吗?我真的不想诉诸XML。希望BinaryFormatter是便携式的。这必须跨平台,因此它不会受到字节序的影响

1 个答案:

答案 0 :(得分:2)

您可能需要查看Protocol Buffers(protobuf):

  

一种语言中立,平台中立,可扩展的序列化结构化数据的方式,用于通信协议,数据存储等。

一些流行的C#库是: