U32 Read( U8 *ps, U8 startBit, U8 length ) { U8 *temp = ps; const U8 BITS = 8; U32 result = 0; U32 currBits = 0; while (currBits != length) { U8 Currbitresult = (*temp & (0xFF >> startBit)); int offset = (BITS- startBit); if (currBits + offset > length) { Currbitresult >>= (currBits + offset - length); offset = BITS - (currBits + offset - length); } result <<= offset; result += Currbitresult; currBits += offset; if( currBits == length) { return result; } startBit = 0; temp++; } }