我正在创建我的第一个真正的二进制解析器(一个 tiff 阅读器)并且有一个关于如何分配内存的问题。我想在我的 TiffSpec 类中为 IFD 条目创建一个结构。这些条目将始终为 12 个字节,但根据特定条目中指定的类型,末尾的值可能是不同的类型(或者可能只是文件中另一个位置的地址)。转换此类数据的最佳方法是什么?我相信我要处理的最小内存是 1 个字节。
最佳答案
在 C++ 中,您应该使用 union
。
这是一种机制,您可以通过这种机制定义多个重叠的数据类型,可能具有共同的 header 。
参见 this article了解如何使用 union 来解决您的问题 - 一个带有不同数据的通用 header 。
关于c++ - 在 C++ 中读取不同格式的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/547758/