كيف يمكنني إلغاء ضغط ملف مضغوط مع Fusecompress / LZO؟
سؤال
لقد قمت بتثبيت FuseCoMprpress من الدليل مضغوط / في Fusecompress / قمت بنسخ ملف كبير (عدة جيجابايت) إلى دليل FuseCompress (موافق، أنا MV'D IT). الملف المضغوط في الدليل المضغوط / هو طول 1،221،396،660. ومع ذلك، لا يمكنني إزالة / إلغاء ضغط الملف. Fusecompress لديه خطأ في الذاكرة: "لا يمكن تخصيص الذاكرة".
هل هناك على أي حال للاستفادة من مكتبة LZO لكتابة روتين إلغاء ضغط الملف المضغوط؟
جربت ما يلي، لكن حصلت على خطأ تجزئة:
char buffer[OUT_LEN];
char outbuffer[IN_LEN];
int read;
lzo_uint writ;
unsigned long totalWrit = 0;
while( (read = fread( buffer, sizeof(char), OUT_LEN, stdin )) > 0 )
{
r = lzo1x_decompress( buffer, read, outbuffer, &writ, NULL );
fwrite( outbuffer, sizeof(char), writ, stdout );
totalWrit += writ;
}
fprintf( stderr, "\nDone. %d bytes written out.\n\n", totalWrit );
تحديث:
ردا على مشروع القانون، فإن أول 160 بايت من الملف هي:
00000000 01 1F 01 5D FF 89 04 00 A2 20 85 04 30 6E BA 48 | ...] ........0N.H | 00000010 00 00 00 01 02 00 00 00 00 00 00 11 3C 3C 3C 20 53 | ........... <<< S | 00000020 75 6E 20 56 69 72 74 75 61 6C 42 6F 78 20 44 69 | Un VirtualBox DI | 00000030 73 6B 20 49 6D 61 67 65 20 3E 3E 3E 0A 00 3B 00 | SK Image >>> ..؛؛. | 00000040 00 08 7F 10 DA BE 01 00 01 00 90 01 00 54 00 3B | ............. T. | 00000050 A8 00 20 C9 70 00 02 02 00 00 00 A2 2D B8 03 6C | .. .P .......- .. L | 00000060 02 A9 02 80 A9 01 10 B4 01 00 15 28 00 00 52 08 | ........... (.. R. | 00000070 00 00 A4 15 30 3E 76 22 73 4C 96 3D BF 8F CA 66 | .... 0> v "sl. = ... F | 00000080 A8 93 2B A6 83 65 44 4D 37 41 A4 02 CA BB 56 4E | .. + .. edm7a .... VN | 00000090 A9 E9 B0 05 39 14 00 05 04 00 00 FF 00 00 00 3F | .... 9 ..........؟ |
المحلول
يجب أن تبدو كيف تم ضغط الملف. يتم تخزين رأس الساحرات والبيانات الإضافية في الملف.
لا تنتمي إلى StackOverflow