我目前正在尝试使用 CMP 解压缩器:https ://web.archive.org/web/20070113004119/http://rewiki.regengedanken.de:80/wiki/.CMP
它实际上解压缩了 cmp,但它不会将其写入文件。所以我尝试了自己。
int main(int argc, char** argv)
{
int length, dstLength;
unsigned char* fileInMem; //compressed data
unsigned char* dstFile; //decompressed data
if (argc < 2) {
fprintf(stderr, "give filename.cmp as parameter\n");
return 1;
}
printf("%s", argv[1]);
fileInMem = loadFile(argv[1], &length); //compressed data read
if (fileInMem == NULL) {
return 1;
}
dstFile = parseCmp(fileInMem, length, &dstLength); //decompress and assign data to dstFile
if (dstFile) {
/* Now we can save the file from dstFile, dstLength bytes */
printf("%d bytes depacked\n", dstLength);
for (int i = 0; i < 16; i++) {
dataArray[i] = fileInMem[i];
}
FILE *writer = fopen(argv[2], "r+");
//fputs(fileInMem, writer);
//fputs(dstFile, writer);
fclose(writer);
free(dstFile);
}
free(fileInMem);
return 0;
}
如您所见,解压缩的数据是指向无符号字符的指针(根据网站的比特流),我尝试了 stdio.h 中的 fputs(),但在十六进制编辑器中查看时,生成的文件仅包含 4 个字节。
如果您需要更多信息,请发表评论。
先感谢您。
编辑:感谢您的帮助,这是我能够更改的内容,但是当我打开文件时,它仍然是空的:
FILE* writer = fopen(argv[2], "wb");
fwrite(dstFile, 192, 192, writer);
192,因为第一个解压后的Image长度为192 Bytes大。