[OSM-dev] Ruby help - streams of bits
richard at systemeD.net
Thu May 17 11:57:10 BST 2007
I'm working on removing the Ming dependency from Potlatch's GPS code.
In other words, you won't need Ming to run Potlatch on your own
machine - you'll only need it to compile the SWF if you want to make
any changes to Potlatch.
I've rewritten the getgps script to assemble the SWF 'manually', and
it works exactly as it should. Only trouble is that it's a bit slow.
SWF's opcodes and arguments are encoded as variable-length streams of
bits. These are all packed in direct succession - i.e. not padded to
byte boundaries or anything like that.
So, for example, you might have
00111 5-bit record
0110101 7-bit record
0000110 7-bit record
0001100 7-bit record
1111101 7-bit record
which would be packed as
(final byte null-padded)
At present I'm doing this by assembling a big big big binary string,
then splitting it into eight-character strings and converting each one
into a number. But this is dreadfully slow.
Do any of the Ruby experts here have any better ideas?
More information about the dev