【问题标题】:C# - Custom encoding system to store array/listsC# - 用于存储数组/列表的自定义编码系统
【发布时间】:2017-06-16 10:01:42
【问题描述】:

所以我深入研究了使用二进制格式化程序对数据进行序列化,对此我印象深刻。但问题是兼容性。我希望我的序列化数据是可移植的,因此可以被不同的平台访问。所以 XML 序列化似乎是答案,但生成的文件太大,不需要人类可读性。

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

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

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

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

有什么更好的方法来做到这一点吗?我真的不想求助于 XML。希望 BinaryFormatter 是可移植的。这必须是跨平台的,所以它不会受到字节序的影响

【问题讨论】:

  • 二进制数据是可移植的,所以我不知道您的担忧是什么。二进制文件将是最紧凑和最快的发送方式。

标签: c# arrays xml serialization


【解决方案1】:

您可能想看看 Protocol Buffers (protobuf):

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

几个流行的 C# 库是:

【讨论】:

  • 好答案。您可能想提及更笼统的主题:Binary XML
猜你喜欢
  • 2010-11-29
  • 1970-01-01
  • 2013-09-03
  • 2013-05-04
  • 2015-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多