我在查看无限引擎(在像Baldur‘save这样的游戏中使用的引擎) 文件格式,然后查看文件结构,我想问,为什么要以十六进制格式保存引擎文件(我认为这也是“二进制格式”),而不是普通文本?
我有一些假设(与堆栈溢出规则不同,即“回避您的答案与问题一起提供,您期望得到更多的答案”):
发布于 2012-05-03 18:47:07
十六进制不是二进制文件。
在十六进制中,每个字符(带有ASCII编码的字节/八进制)可以表示16个值: 0-9和A-F。它需要两个十六进制字符来表示256个值。
在“二进制文件”中,每个字节(八进制)可以表示256个值。
现在,使用二进制文件的要点是,它是“最原始”的格式,不需要以任何方式提供给人类消费。这大大增加了文件的数据/八位组比率。
二进制格式可以帮助"IP",但这不一定是一个主要目标。有足够的编辑工具的球迷(如证明),以及官方的工具不时。
二进制文件结构可以用偏移量确定,可以直接查找,而不需要像文本文件那样“读取到X行和Y列”。这使得资源的随机访问变得更加有效。在许多Baulder的Gate文件中,许多文件是“固定格式”的,并且可以被轻松(快速)加载到相同的内存结构中。(有时堆和其他数据结构将直接编码在二进制文件中。)
二进制文件是数据的不透明结构:它只是结束的手段。内部的信息只有在特定情况下才能访问。(将其与JSON或SQL数据库进行比较;前者不是不透明的,因为它是“人用的”,后者只公开信息。)
看看不同类型的二进制文件和每个二进制文件所提供的服务:音频?图像?路线?实体位置和统计?对话?每个工具都是根据引擎的特定需求而设计的,虽然有些“可以用不同的方式完成”,但如果不需要并且现有的工具已经到位,为什么要改变呢?
发布于 2012-05-03 18:43:13
更紧凑,不需要字符串解析。例如,要存储一个数字'123‘,您需要一个字节。要存储字符串"123“,您将需要三个字节和至少一个字节的长度。如果有些人认为今天我们不需要考虑空间,那么他/她就不应该编写代码。这在好应用程序和坏应用程序之间有区别。
https://stackoverflow.com/questions/10437367
复制相似问题