如何布局自定义二进制文件格式
How do you lay out your custom binary file format?
每个应用程序都有自己自定义的二进制文件格式(例如。mpq,。wad)。最重要的是,它通常是压缩的。
所以,我的问题是,如何巧妙地/巧妙地布局文件的二进制内容。你在开头是否有一个类似"目录"的结构?将所有内容转储到一个文件中是不是更好?假设你有一个Shapes
的数组,并且在每个Shape
中都是变形的顶点数据(所以顶点数据已经从最初加载的文件中改变了,所以它应该重新保存)。
class Shape
{
vector<Vertex> verts ;
} ;
class Sphere : public Shape { } ; // ...more geometric shapes (Tet, Cube) are defined..
class Model : public Shape { } ; // general model "Shape" loaded from file
vector<Shape*> shapes ; // save me! contents are mix of Model, Sphere, Tet..
// each with variable number of verts
我最喜欢文章的主题文件格式是http://www.fadden.com/techmisc/file-formats.htm。
除此之外,它可能归结为您存储的数据类型,以及如何使用这些数据(主要是通过网络传输吗?寻求访问权有多重要?等).
从那篇文章开始;如果你已经有一个需要设计的格式,它可能会帮助你明确你的想法。
简而言之—如果您只需要序列化,这意味着您将从流中读写,那么您可以在这里使用简单的方法并逐个成员地发出您的脚本,或者使用任何序列化库,从CArchive to
....只要你喜欢。
如果没有,您将需要直接访问文件中的数据,那么…你将使用你的需求,他们会用一些技巧告诉你文件的布局。
是的,这是一个广泛的话题。例如
我需要一个数据库的缩略图为我的软件。每个缩略图都有一个时间戳,我知道它们的大小不同。要求:
- 顺序写入(拇指将被附加到数据库的末尾)
- 拇指按升序添加
- 直接读取(给定时间,在0(1)中获取缩略图)
- 不修改数据库
- 缩略图将在15秒间隔
是的,这里的需求很简单,但它们代表了它们自己。
我创建了两个文件,一个是索引文件,另一个是图片文件。
存储:在数据文件后附加图像,在索引文件后附加数据文件中图像的索引。读取:使用简单索引(索引为(timestamp-timestamp_start)/15
)查找文件中的索引。使用该索引获取图像数据
相关文章:
- 自定义构建文件更改不会触发VS 2017中的项目重建
- C++-在没有自定义.lib文件的情况下从Lua C模块调用Lua函数
- 如何使用自定义对象的序列化在 c++ 中编写自定义二进制文件处理程序
- 自定义二进制文件在 C++ 中触发故障位
- 如何在Windows中创建扩展(自定义)文件属性
- 预处理一个自定义文本文件,以使用Boost Spirit删除注释
- C 中的自定义数据文件扩展
- C++自定义头文件 - 语法错误 C2061:标识符
- Python 3.3 中的自定义二进制 json 与 UBJsonReader Libgdx 兼容
- 如何在 Linux 的C++文件中包含自定义头文件
- 自定义头文件和包含库[C++]
- 如何在VC++静态库中加载自定义二进制资源作为dll的一部分
- 在C++11中定义二进制文件的结构
- visual C++自定义二进制资源文件
- 测试用户自定义头文件和其他问题
- 无法使用Qt助手从Qt应用程序内部获取自定义帮助文件
- 如何布局自定义二进制文件格式
- c++:尝试从自定义头文件调用函数时,参数错误
- 如何创建、读取和写入自定义二进制文件格式
- 无法在Linux中使用自定义头文件编译C++程序