Bitstring is a syntax extension which adds Erlang-style bit matching
and construction to OCaml programs. You can use this to efficiently
and safely parse communication protocols and binary file formats.
Bitstring handles integers, booleans, strings, sub-bitstrings, big-,
little- and native-endianness, signed and unsigned types,
variable-width fields, fields whose width depends on values in
previous fields, fields with arbitrary bit alignment, forward offsets,
when-clauses, checked expressions, security against buffer overflows
and DoS, and lots more.
Example:
let bits = Bitstring.bitstring_of_file image.gif in
bitmatch bits with
| { (GIF87a|GIF89a) : 6*8 : string; (* GIF magic. *)
width : 16 : littleendian;
height : 16 : littleendian } -
printf %s: GIF image is %d x %d pixels filename width height
| { _ } -
eprintf %s: Not a GIF image\n filename
The latest version is 2.0.2 which fixes a number of compilation
problems related to OCaml 3.11, and incorporates some unofficial
patches which were floating around. (Note that bitstring 2.0.0 is
known to be broken on Debian).
Home page:
http://code.google.com/p/bitstring/
API documentation:
http://people.redhat.com/~rjones/bitstring/html/Bitstring.html
Rich.
--
Richard Jones
Red Hat
___
Caml-list mailing list. Subscription management:
http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
Archives: http://caml.inria.fr
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs