如何实现几个字节同事偏移N位(按bit位偏移)?

2019-07-21 06:27发布

比如有一个三个元素的数组,转换成二进制 内容如下  00001111 00001111 00001111  ,让他们同时往左偏移3个bit位  变成 00000001 11100001 11100001  如何用C语言来实现呢?越简短越好谢谢各位网友


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
13条回答
xiatianyun
2019-07-22 16:07
xiatianyun 发表于 2018-12-23 19:58
问一下,你这里的data_len到底是数据长度还是数据数量?
按说应该是数据数量,但是如果是数量的话开始的 ...

编了一个移动范围为8以内的程序供参考:
void data_offset(unsigned char offset, unsigned char number, unsigned char* pData)
{
        unsigned char* pTemp = pData + number - 1; //pTemp Ö¸Ïò×îÄ©Ò»¸öÔªËØ×Ö½Ú£¬Ð¡¶ËģʽÏÂÊÇ×î¸ß×Ö½Ú¡£
        for(int i = 0; i < number; i++)
        {
                *pTemp = (*pTemp << offset) | (*(pTemp - 1) >> (8 - offset));
                pTemp--;
        }                       
}

一周热门 更多>