Posted By: Dion Mendel
Date: 2009-09-16 02:15
Summary: BinData 1.0.0
Project: BinData
= BinData is a declarative way to read and write structured binary data.
At long last version 1.0.0 has been released.
BinData is now considered feature complete. This release includes support for Ruby 1.9, as well as an extensive reference manual.
If you use BinData and have any comments, suggestions or questions, feel free to email me.
== What is BinData?
Do you ever find yourself writing code like this?
io = File.open(...)
len = io.read(2).unpack("v")
name = io.read(len)
width, height = io.read(8).unpack("VV")
puts "Rectangle #{name} is #{width} x #{height}"
It's ugly, violates DRY and feels like you're writing Perl, not Ruby.
Here's how you'd write the above using BinData.
class Rectangle < BinData::Record
. endian :little
. uint16 :len
. string :name, :read_length => :len
. uint32 :width
. uint32 :height
end
io = File.open(...)
r = Rectangle.read(io)
puts "Rectangle #{r.name} is #{r.width} x #{r.height}"
BinData supports signed/unsigned integers, floats, bitstrings, strings, null terminated strings, arrays, choices and user defined structures. |
|