gpt4 book ai didi

hex - 为什么以十六进制(二进制)而不是纯文本保存数据文件?

转载 作者:行者123 更新时间:2023-12-04 05:47:54 37 4
gpt4 key购买 nike

我正在查看 Infinity Engine(用于 Baldur's Gate 等游戏的引擎)file formats ,然后查看文件结构,我想问的是,为什么以十六进制格式(我认为这也称为“二进制格式”)而不是纯文本保存引擎文件?

我有一些假设(不同于 stackoverflow 规则“避免你的答案与问题一起提供,而你期待更多答案”):

  1. 尝试保留文件的知识产权(无用)。
  2. 为了节省空间,因为有些文件可能会变得非常大,而当时(1990 年代末)空间不像现在那么大。
  3. 拥有结构化数据(这也可以通过在平面文件中使用固定长度的标签来实现)。

最佳答案

Hexadecimal不是二进制的。

在十六进制中,每个字符(使用 ASCII 编码的字节/八位字节)可以表示 16 个值:0-9 和 A-F。它需要两个十六进制字符来表示 256 个值。

在“二进制文件”中,每个字节(八位字节)可以表示 256 个值。

现在,使用二进制的要点在于它是“最原始”的格式,不需要以任何方式供人类使用。这大大增加了文件的数据/八位字节比率。

二进制格式可以帮助实现“IP”,但这不一定是主要目标。有很多由粉丝编写的编辑器工具(有证据表明),以及不时出现的官方工具。

二进制文件结构可以在偏移量 中确定,并且可以直接查找,而不需要像文本文件那样“读取到 X 行和 Y 列”。这使得资源的随机访问更加高效。在许多 Baulder's Gate 文件的情况下,许多文件都是“固定格式”,可以轻松(快速)加载到布局相同的内存结构中。 (有时堆和其他数据结构将直接编码在二进制文件中。)

二进制文件是数据不透明结构:它只是结束的手段。里面的信息只是为了在特定的场景下访问而设计的。 (将其与 JSON 或 SQL 数据库进行比较;前者并非不透明,因为它是“人类消费品”,而后者仅公开信息。)

看看不同 类型的二进制文件和每个文件提供的服务:音频?图片?路线?实体位置和统计数据?对话?每一个都是根据引擎的特定需求而制作的,虽然有些“可以以不同的方式完成”,但如果不需要并且现有工具已经到位:为什么要改变?

关于hex - 为什么以十六进制(二进制)而不是纯文本保存数据文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10437367/

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