提取LZO1文件- c#

本文关键字:文件 LZO1 提取 | 更新日期: 2023-09-27 18:11:15

我想知道如何使用c#提取文件。我知道你们中的许多人会说,很多人都问过关于使用c#提取文件的问题,但我相信我试图解压缩的压缩格式是LZO。我不太确定它是如何工作的,我已经到处找了一些可以这样做的课程。此外,该文件的顶部没有LZO魔法,但我仍然非常确定它是LZO。我认为这是因为我下载了另一个用c++构建的工具,并且需要"lzo1.dll"(下载)。我还将包含下面的文件,我试图找出如何提取。谢谢你的帮助:)

试图提取:http://www.fileserve.com/file/bzV4XEz/Save0.sgd

同样,这是可以提取的程序在提取后显示给我的信息:http://pastebin.com/xmHtZagG

提取LZO1文件- c#

lzo1.dll文件是LZO解压缩库的公开版本。因为这似乎在你的文件上工作,你可以尝试使用它,特别是如果。net LZO库不为你工作。

它似乎已经从通常的地方(GnuWin32)消失了,但我发现它在这里:

http://www.pytables.org/download/lzo-win/

一旦你有了这个,你就可以使用p/Invoke来调用库中的非托管方法。上面的归档文件包括二进制文件、头文件和手册页——您自己进行c# P/Invoke翻译所需的所有内容。只是做一个解压缩看起来并不太复杂,只有两个调用:
[DllImport("lzo1.dll", CallingConvention=CallingConvention.Cdecl)]
public static extern int lzo_init ( );
[DllImport("lzo1.dll", CallingConvention=CallingConvention.Cdecl)]
public static extern int lzo1x_decompress ( 
  [MarshalAs(UnmanagedType.LPArray, SizeParamIndex=1)] byte[] src,
  int src_len,
  [MarshalAs(UnmanagedType.LPArray, SizeParamIndex=3)] byte[] dst,
  int dst_len,
  IntPtr wrkmem);

似乎有一堆不同的_decompress方法,您可能只需要尝试它们,看看哪一个适用于您的特定文件。它们都有相同的签名,只是名字不同。查看头文件,看看有哪些。