common/bs.h
函数名称:
函数功能:从s中读出1位,并将其做为uint32_t类型返回。
函数参数:
返 回 值:
思 路:若s流并未结束,则读取一位
资 料:
毕厚杰:第145页,u(n)/u(v),读进连续的若干比特,并将它们解释为“无符号整数”
return i_result; //unsigned int
*/
static inline uint32_t bs_read1( bs_t *s )
{
if( s->p < s->p_end ) //
{
unsigned int i_result;
s->i_left--;//当前字节未读取的位数少了1位
i_result = ( *s->p >> s->i_left )&0x01;//把要读的比特移到当前字节最右,然后与0x01:00000001进行逻辑与操作,因为要读的只是一个比特,这个比特不是0就是1,与0000 0001按位与就可以得知此情况
if( s->i_left == 0 )//如果当前字节剩余未读位数是0,即是说当前字节全读过了
{
s->p++; //指针s->p 移到下一字节
s->i_left = 8; //新字节中,未读位数当然是8位
}
return i_result;//unsigned int
}
return 0;//返回0应该是没有读到东西
}