在C#中创建大型二进制文件的Delta Diff补丁

时间:2009-05-21 10:43:42

标签: c# .net diff

我正在寻找一种方法来创建大型二进制文件的Delta Diff补丁(VMWare虚拟磁盘文件)。是否有C#中的实现或.NET Framework中的任何有用方法。

感谢任何帮助。感谢。

rAyt

3 个答案:

答案 0 :(得分:6)

bsdiff旨在为二进制文件创建非常小的补丁。

如其页面所述,它需要max(17*n,9*n+m)+O(1)个字节的内存并在O((n+m) log n)时间内运行(其中n是旧文件的大小,而m是新文件的大小),因此需要很长时间并使用大量内存来为虚拟磁盘文件创建差异。

最初的实现是在C中,但是C#端口被描述为here并且可用here

答案 1 :(得分:3)

框架中没有任何东西可以做到这一点。

您将不得不寻找第三方解决方案,商业或免费,或自己编写。

常见的算法是VCDiff算法,该算法被相当多的产品使用。

答案 2 :(得分:3)

这是一个实现Meyers O(ND)差异算法的C#类:

http://www.mathertel.de/Diff/default.aspx

享受!