Click here to Skip to main content
13,666,865 members
Click here to Skip to main content
Add your own
alternative version


53 bookmarked
Posted 3 Nov 2006

Pure C# MiniLZO port

, 22 Dec 2006
Rate this:
Please Sign up or sign in to vote.
Fast stream compression using a ported minilzo for .NET.


I was recently in a position where I needed to find a fast streamable compression solution.  The great source by Markus Oberhumer provided the answer. After using the C code for a while, I realized C#/.NET lacked a similar library, short of one I found which was commercial.

As a result, I decided to attempt a minimalistic port of MiniLZO compression and decompression into pure C#. At this point, the code uses unsafe/fixed blocks to best mimic the original minilzo implementation. A pure managed solution may be soon to follow (at the cost of speed).

The code has not been unit tested 100%, but all initial tests have been successful. If anyone finds any bugs, please report them so I may fix it. I also have not done any profiling of the speed yet, if anyone feels upto the task of comparing it against the C implementation.

Use of the code is relatively simple, here is a quick example.


byte[] original = File.ReadAllBytes("...");
byte[] destination;
MiniLZO.Compress(original, out destination);


byte[] destination = ...; /* Resulting buffer from above */
byte[] original = new byte[x];
MiniLZO.Decompress(destination, original);

Note that with compression, the destination buffer will be assigned and trimmed to the correct size. With decompression, the "original" buffer must be preallocated with the correct original size. Also note that my implementation removed all use of goto from the original source, and replaces certain uses with OverflowExceptions.


This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


About the Author

Web Developer
Canada Canada
Short and simple, I'm a self contracted programmer, my strongest programming skills are in C/C++ and C#/.NET. I have a nack for porting C algorithms to C#.

You may also be interested in...

Comments and Discussions

QuestionAccessViolation on 64-bit Pin
zzattack26-Aug-13 16:25
memberzzattack26-Aug-13 16:25 
QuestionCan u port lzo1z to .net Pin
yuvraj_oak1-Jul-11 23:01
memberyuvraj_oak1-Jul-11 23:01 
GeneralDynamic sizes Pin
HenryChilvers20-Sep-10 13:26
memberHenryChilvers20-Sep-10 13:26 
GeneralBuffer overflow help :( Pin
zeeh315-Jul-10 9:49
memberzeeh315-Jul-10 9:49 
GeneralRe: Buffer overflow help :( Pin
zeeh316-Jul-10 7:07
memberzeeh316-Jul-10 7:07 
GeneralRe: Buffer overflow help :( Pin
Member 1020339811-Aug-13 20:15
memberMember 1020339811-Aug-13 20:15 
QuestionUsage in closed source customer project Pin
Kay Herzam12-Jul-07 22:01
memberKay Herzam12-Jul-07 22:01 
AnswerRe: Usage in closed source customer project Pin
Astaelan13-Jul-07 6:11
memberAstaelan13-Jul-07 6:11 
Generalexample with memory stream, chunk-by-chunk Pin
dncpax211-Jul-07 1:19
memberdncpax211-Jul-07 1:19 
GeneralRe: example with memory stream, chunk-by-chunk Pin
Astaelan13-Jul-07 6:07
memberAstaelan13-Jul-07 6:07 
GeneralSource Code Pin
Tit Copernicus5-May-07 3:10
memberTit Copernicus5-May-07 3:10 
GeneralRe: Source Code Pin
Astaelan5-May-07 8:24
memberAstaelan5-May-07 8:24 
GeneralHere is how to make it work on Pocket PC Windows Mobile Pin
rkm10-Jan-07 1:56
memberrkm10-Jan-07 1:56 
GeneralDoesn't work on 64 bit Pin
bimal20064-Jan-07 17:38
memberbimal20064-Jan-07 17:38 
GeneralRe: Doesn't work on 64 bit Pin
Astaelan4-Jan-07 18:15
memberAstaelan4-Jan-07 18:15 
GeneralRe: Doesn't work on 64 bit Pin
tedsmorris24-Oct-07 8:39
membertedsmorris24-Oct-07 8:39 
GeneralRe: Doesn't work on 64 bit Pin
AVEbrahimi17-Jun-09 21:21
memberAVEbrahimi17-Jun-09 21:21 
GeneralRe: Doesn't work on 64 bit Pin
chenavnery1-Jul-15 5:02
memberchenavnery1-Jul-15 5:02 
GeneralThanks Pin
Behind The Scene22-Dec-06 12:46
memberBehind The Scene22-Dec-06 12:46 
GeneralRe: Thanks Pin
Astaelan23-Dec-06 3:47
memberAstaelan23-Dec-06 3:47 
GeneralTiny bug Pin
SimmoTech22-Nov-06 19:14
memberSimmoTech22-Nov-06 19:14 
GeneralRe: Tiny bug Pin
Astaelan22-Dec-06 9:19
memberAstaelan22-Dec-06 9:19 
GeneralSuggestion Pin
Oskar Austegard9-Nov-06 3:04
memberOskar Austegard9-Nov-06 3:04 
GeneralRe: Suggestion Pin
Astaelan13-Nov-06 22:54
memberAstaelan13-Nov-06 22:54 
GeneralAnother such library... Pin
omaurice6-Nov-06 15:06
memberomaurice6-Nov-06 15:06 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Cookies | Terms of Use | Mobile
Web01-2016 | 2.8.180810.1 | Last Updated 22 Dec 2006
Article Copyright 2006 by Astaelan
Everything else Copyright © CodeProject, 1999-2018
Layout: fixed | fluid