Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1800331
  • 博文数量: 600
  • 博客积分: 10581
  • 博客等级: 上将
  • 技术积分: 6205
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-06 10:13
文章分类
文章存档

2016年(2)

2015年(9)

2014年(8)

2013年(5)

2012年(8)

2011年(36)

2010年(34)

2009年(451)

2008年(47)

分类: C/C++

2009-10-19 10:21:22

void str_bitmove( unsigned char * _buf, int _len, char _mflag, int _mnum )
{
    int                    i,j;
    unsigned char          p_bit=0, c_bit;
    if( _buf == NULL || _len == 0 || _mnum <= 0 ||
        ( _mflag!='R' && _mflag!='r' && _mflag!='L' && _mflag!='l' ) )
        return;
    if( _len*8 < _mnum )
        _mnum = _len*8;
    if( _mflag == 'R' || _mflag == 'r' ) {
        for( i=0; i<_mnum; i++ ) {
            for( j=0; j<_len; j++ ) {
                c_bit = _buf[j] & 0x01;
                _buf[j] >>= 1;
                if( j > 0 && p_bit == 0x01 )
                    _buf[j] |= 0x80;
                p_bit = c_bit;
            }
        }
    }
    else {
        for( i=0; i<_mnum; i++ ) {
            for( j=_len-1; j>=0; j-- ) {
                c_bit = _buf[j] & 0x80;
                _buf[j] <<= 1;
                if( j < _len-1 && p_bit == 0x80 )
                    _buf[j] |= 0x01;
                p_bit = c_bit;
            }
        }
    }
    return;
}
阅读(1520) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~