我的任务是(通过 C#)从传统二进制文件中解析出图像,其格式现在已经有 20 年了;图像数据嵌入在二进制文件中,并以十六进制标志为前缀。以下是我正在寻找的标志的定义(在 C 中):
#define C_THUMBNAIL 0x0008 /* thumbnail bitmap */
#define C_CTHUMBNAIL 0x000d /* compressed thumbnail bitmap */
如何在文件中找到这些标志之一(它们甚至是标志吗?)?如果我能弄清楚标志在哪里以及如何读取标志之后的值(以字节为单位的图像大小),我就可以做我需要的事情。这是我到目前为止所拥有的:
var binReader = new BinaryReader(new FileStream(fileLocation, FileMode.Open));
//1. find flag
//2. get image size in bytes
//3. take the slice of the byte array containing the image
//4. write that slice of the array to a .png file.
我最初的想法是遍历二进制流直到找到标志,但我真的很困惑,如果我的十六进制标志是数字 8(0x0008 == 8,对吗?),我应该找到它在文件中并将其与文件中的所有其他 8 区分开来。
抱歉,如果这是一个重复的问题,但我对这个问题了解得不够多,不知道要研究什么来解决它。我已经阅读了有关二进制文件的 MSDN 文档并在此处阅读了一些类似的问题,但不知道他们是否回答了我的问题。