Beispiel #1
0
 /** Retrieve a list of bit offsets
    The \p bit_offsets vector is first cleared.
    \param[out] bit_offsets A list of bit offsets, in ascending order
 */
 void OBBitVec::ToVecInt(std::vector<int> & bit_offsets) const
 {
   bit_offsets.clear();
   bit_offsets.reserve(CountBits());
   for (int i = NextBit(-1);i != -1;i = NextBit(i))
     bit_offsets.push_back(i);
 }
OSCL_EXPORT_REF void BitStreamParser::WriteBits(uint8 numberOfBits, const uint8* data)
{
    //This is not the most efficient algorithm, but it is the least complex.
    //Treat "data" as an input stream.
    BitStreamParser input(const_cast<uint8*>(data), BITS_TO_BYTES(numberOfBits));
    //Skip over the unused bits.
    input.NextBits(input.BitsLeft() - numberOfBits);
    //Loop through each bit to process...
    while (numberOfBits)
    {
        uint8 bitmask = 1 << bitpos;
        //READ
        uint8 byte = *bytepos;
        //MODIFY
        byte &= ~(bitmask);                      //Clear the bit being written.
        byte |= (input.ReadBits(1) << bitpos); //Write the bit.
        //WRITE
        *bytepos = byte;
        //Advance the bit pointer
        NextBit();
        numberOfBits--;
    }
}
Beispiel #3
0
bit Random::NextBit()
{
	return NextBit(0.5);
}