|
Boost : |
From: Boost Rookie (boostrookie_at_[hidden])
Date: 2004-09-27 04:00:13
Boost Rookie <boostrookie <at> yahoo.com> writes:
> I should specify something called Block/BlockInputIterator as
> a template parameter? I do not know what that is.
Playing around a little more made me realize that the following is ok:
unsigned char data[5] = {211,14,97,42,31};
boost::dynamic_bitset<unsigned char> bitbuf(data,&data[5]);
So, unsigned char specifies a Block and the unsigned char* is the
BlockInputIterator - alright. It wasn't that obvious for me as a newbie...
> After construction I do not see how to extract the bits!? Is it only possible
> to extract one bit at a time?!?!?
I have not find a way around this yet :-( To make myself clear, I'd like to
extract a range of bits, preferably by specifing the start bit position and the
number of bits to extract. I can see that there is a to_block_range but it just
extracts the complete bitset.
Now, another issue has surfaced. When iterating the bitset I see that the bits
are stored in a "weird" format (at least it is weird to me)?!
for (int i=0; i<5*8; ++i)
{
bool bit_i = bitbuf[i];
std::cout << bit_i;
}
Instead of the expected sequence:
1101001100001110011000010010101000011111
the loop prints:
1100101101110000100001100101010011111000
I.e. each byte has its bits in the reversed order! As a newbie it is not
obvious to me why this is so... And the confusion is total after this:
std::cout << bitbuf;
which decides to print the sequence:
0001111100101010011000010000111011010011
Please help me figure the rationale behind this out!
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk