0

我需要读取和解释包含 TIFF 图像的二进制文件。我知道存在这样做的读者,但我想走艰难的路。我找到了 TIFF 格式描述,需要以小块的形式解析二进制文件。假设我能够在内存中读取完整的二进制文件。这意味着我有一个包含一长串字节的变量。我通过格式定义知道不同组的 n 个字节的含义。

如何定义不同长度的字符变量(有时为 2,有时为 3,有时为 4 等),以使变量地址指向图像变量数组中的正确位置?

换句话说,假设我的图像被加载到包含文件所有字节的数组 Image 中。我想将前 2 个字节加载到长度为 2 个字节的字符串中,这样我就可以将地址指针链接到 Image 数组中的第一个位置,并自动将前 2 个字节与第一个字符串相关联。第二个 4 字节字符串将具有另一种含义,因此我将第二个 4 字节字符串的地址指向 Image 数组的第三个位置。

这在 C++ 中可行吗?我记得这是我很久以前分析的模拟代码中 Fortran 77 中动态内存分配的一种正常工作方式。

提前感谢您的提示!

问候,

斯特凡

4

1 回答 1

1

C++ 语言很容易处理来自字节数组的 TIFF 文件。您的想法基本上是正确的,但是存在一些问题。C 字符串以零结尾,出现在 TIFF 文件中的字符串不一定以零结尾,因为它们的长度是明确指定的。创建一个专用的数据结构来保存特定于 TIFF 的数据字段,然后将二进制数据解析到该结构中确实更简单。如果您的机器具有相反的字节序,您的方法将立即遇到摩托罗拉/英特尔字节问题。

于 2012-09-29T22:40:54.110 回答