本文只举例了4bit的重新排列算法,可以依此类推8bit的数据排列算法
/**
* 重新排列bit位,4bit一个单元转换
* @param->src: 需要转换的数据
* @return: 返回转换后的数据
* @detail:
* 高4位和低4位分开单独转换,
* 比如:
* 输入:0x57 -> 0101 0111b
* 输出:0xae -> 1010 1110b
*/
uint8_t reverseBitOrderHalfByte(uint8_t src)
{
int8_t i ,j= 0;
uint8_t ret = 0;
//低4位
for(i = 3; i >= 0; i --)
{
ret |= (!!(src & (1 << i))) << (3 - i);
}
//高4位,4 5 6 7
// 7 6 5 4
for(i = 4, j = 7; i < 8; i ++, j --)
{
ret |= (!!(src & (1 << j))) << (i);
}
return ret;
}