views:

164

answers:

3

Hi.

Recently I had a task to make a binary files parser, however it was the first time of using C#/.NET for this kind of problems. It was really simple to parse and extract data from the required binary files because of their simple structure (though I have to say it was unusual rather than the simple way C/C++; also as far as I digged into it, .NET does not support the values stored in reverse order [sure I can be wrong]). There are a lot of problems that are more complex and they require more flexible way of parsing, so I tried to google for some libraries that allow to process complex data structures and to describe them in declarative way with structure and fields attributes. At this moment I found a Java framework Preon only (here and here). I see that Preon is pretty good for these problems, it allows to describe data structure declaratively making it very flexible, but are there any ports or analogues of Preon for .NET?

Thanks.

+2  A: 

You may wish to look at Protocol Buffers. It's a cross-platform binary serialization format; there are two major .NET implementations - mine and Marc Gravell's.

Jon Skeet
why are there two implementaions of Protocal Buffers and who do this differ?
Ian Ringrose
@Ian: Marc and I happened to start working on it at the same time. Marc's project is more WCF-friendly, and was written from scratch; mine is closer to the Java API.
Jon Skeet
@Jon: "mine is closer to the Java API" - did you mean JDK or exactly Preon?
Lyubomyr Shaydariv
@L Sahydariv: Neither - I meant it's closer to the Java API for Protocol Buffers. We're talking about my implementation of Protocol Buffers for .NET.
Jon Skeet
@Jon: Oh, I got it. :) Thank you. :)
Lyubomyr Shaydariv
+2  A: 

The Mono project seems to have implemented Perl's Pack function.

See http://www.mono-project.com/Mono_DataConvert.

leppie
I'll check it. Thanks. :)
Lyubomyr Shaydariv
+1  A: 

Anyone interested in porting Preon to .NET, feel free to to contact me. I'm the developer of Java Preon: wilfred at flotsam dot nl

Wilfred Springer