I have two related problems (in Perl):
- Write data to binary files, in the format: single bit flag followed by 8 bits
- Read back the same format
I tried this (and other variations but for the life of me I can’t figure this out):
binmode(OUT);
my $bit = pack("B1", '1');
my $byte = pack("H2", "02");
print OUT $bit . $byte;
Using a hex editor, I see I get 16 bits:
1000000000000020
What I want is 9 bits:
100000020
Also: Suppose I write out two of these patterns. That means I end up with 9 + 9 = 18 bits. I am not sure how to handle the last byte (padding?)
This is to compress and uncompress files, with space at premium. I was hoping there would be some simple idiomatic way to do this that I am not aware of.
You can use Bit::Vector to manage your bits and conversion with some more ease,
Here’s the output