撸码不易,网上找不到,索性自己写,且撸且珍惜!
/*********************************************************
buff: 要编辑的数组
pos: 其实位置(单位:位)
size: 要写入的长度(单位:位)
value:写入的数据
*********************************************************/
void bitsWrite(uint8_t* buff, int pos, int size, uint32_t value)
{
uint32_t index[] =
{
0x80000000, 0x40000000, 0x20000000, 0x10000000, 0x8000000, 0x4000000, 0x2000000, 0x1000000,
0x800000, 0x400000, 0x200000, 0x100000, 0x80000, 0x40000, 0x20000, 0x10000,
0x8000, 0x4000, 0x2000, 0x1000, 0x800, 0x400, 0x200, 0x100,
0x80, 0x40, 0x20, 0x10, 0x8, 0x4, 0x2, 0x1,
};
for(int i = 0; i < size; ++i)
{
int curBytePos = (pos+i)/8;
int byteLeft = (pos+i)%8;
buff[curBytePos] = buff[curBytePos] &