gpt4 book ai didi

.net - C#/.NET - 自定义二进制文件格式 - 从哪里开始?

转载 作者:行者123 更新时间:2023-12-04 13:30:08 27 4
gpt4 key购买 nike

我需要能够以自定义二进制文件格式存储一些数据。我以前从未设计过自己的文件格式。它需要是一种友好的格式,以便在 C#、Java 和 Ruby/Perl/Python 世界之间穿梭。

首先,文件将由记录组成。一个 GUID 字段和一个 JSON/YAML/XML 数据包字段。我不确定使用什么作为分隔符。逗号、制表符或换行符之类的东西似乎太脆弱了。 Excel 是做什么的?还是 XML 之前的 OpenOffice 格式?你应该使用 ASCII 字符 0 还是 1。不确定从哪里开始。有没有关于这个主题的文章或书籍?

此文件格式稍后可能会扩展以包含“标题部分”。

注意:首先我将在 .NET 中工作,但我希望该格式易于移植。

更新:
“数据包”的处理可能很慢,但文件格式内的导航不能。所以我认为 XML 不在考虑之列。

最佳答案

我将尝试添加一些创建可移植二进制文件格式的一般提示。

请注意,发明二进制文件格式意味着记录其中的位必须如何以及它们的含义。这不是编码,而是文档。

现在提示:

  • 决定如何处理 字节序 .好的和简单的方法是一劳永逸地决定它。当在普通 PC(即 x86)上使用时,选择最好是 little endian 以节省转换(性能)。
  • 创建 标题 .是的,总是有一个标题是个好主意。文件的第一个字节应该能够告诉您,您正在使用什么格式。
  • 从魔术开始,以便能够识别您的格式(ASCII 字符串可以解决问题)
  • 添加版本。添加文件格式的版本不会有什么坏处,它可以让您稍后进行向后兼容。
  • 最后,添加数据。现在,数据的格式将是特定的,并且始终基于您的确切需求。基本上,数据将存储在某种数据结构的二进制图像中。数据结构是您需要提出的。

  • 如果您需要通过某种索引随机访问您的数据, B-Trees有很长的路要走,而如果您只需要大量数字来将它们全部写入然后将它们全部读取,则“数组”就可以解决问题。

    此外,您可以使用 TLV (Type-Length-Value)向前兼容的概念。

    关于.net - C#/.NET - 自定义二进制文件格式 - 从哪里开始?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/794977/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com