标题苹果磁盘映像
Header Apple Disk Image
我尝试获取 dmg 文件的标头。我看到了这个链接这对我帮助很大.所以我做了一个c ++程序来获得所有这些东西。
在这里:
struct Header
{
int img;
char tag[4];
short size;
short version;
int format;
int flag;
int num_block;
int offset;
int length;
int offset_comment;
int length_comment;
int offset_creator;
int length_creator;
char space[16];
};
void read_header(const char *path)
{
Header head;
FILE *file = fopen(path, "rb");
fread(&head, 1, sizeof(Header), file);
printf(" size short = %dn", sizeof( short ));
printf(" size int = %dn", sizeof( int ));
printf(" size struct = %dn", sizeof( Header ));
printf("img %dn", head.img);
printf("tag %sn", head.tag);
printf("size %dn", head.size);
printf("version %dn", head.version);
printf("format %dn", head.format);
printf("flag %dn", head.flag);
printf("num_block %dn", head.num_block);
printf("offset %dn", head.offset);
printf("length %dn", head.length);
printf("offset_comment %dn", head.offset_comment);
printf("length_comment %dn", head.length_comment);
printf("offset_creator %dn", head.offset_creator);
printf("length_creator %dn", head.length_creator);
}
我明白这个:
size short = 2
size int = 4
size struct = 64
img 152133
tag
size 0
version 0
format 0
flag 0
num_block 0
offset 0
length 0
offset_comment 0
length_comment 0
offset_creator 0
length_creator 0
我不知道为什么我的所有值都是空的,除了第一个.我的dmg文件很好,我可以打开它。有人知道为什么我得到空值吗?
首先,当您遇到此类错误时,最好实际查看原始形式的数据,以确定问题出在您的代码上,还是出在它试图解释的数据上。
在这种情况下,您的问题是文件格式不同 - 当您使用磁盘工具创建.dmg文件时,它看起来甚至不像维基百科页面中指定的格式。
换句话说 - 你的代码很好,问题在于它正在处理的数据。
事实证明,.dmg文件的"标头"实际上存储在文件的末尾 - dmg2img等工具 - http://vu1tur.eu.org/tools/可用于适当地解析数据;此外,它包含比您使用的标头更好的定义。
相关文章:
- SDL 映像:无法打开映像,仅显示错误消息
- C++ W:使用子线程的运行映像
- 从头开始为应用程序创建 docker 映像是否有意义?
- 主机箱/bash 未执行 docker 映像
- 无法从Java读取C++中保存的Opencv Mat映像
- CMake链接库在Docker映像中失败
- 在.NET Core 3.1中运行托管C++/CLI程序集时,映像格式错误
- 如何在C++中使用ZeroMQ通信多个映像
- 无法写入映像 SimpleElastix (Python)
- 如何在 windowsservercore Docker 映像上安装执行本机C++ DLL/EXE 所需的所有依赖二进制
- 无法将映像加载到 SDL2 程序
- 从 docker 映像构建中省略安装文件
- 使用 OpenGL 中的 imageStore 写入映像
- QML 映像不会在映像源中加载具有非 ASCII 字符的图像
- 警告在将 OpenCV 垫映像投射到 QImage 时使用旧式转换
- 在控制台上显示 BMP 映像时堆损坏
- 处理映像上的多个转换
- 我可以将带有依赖项的C++库作为 Docker 映像分发吗?
- 标题苹果磁盘映像
- 从磁盘读取映像文件出错