所以现在我有了这个
unsigned char getlsbs(unsigned char *p){
int r;
unsigned char newByte, temp;
newByte = 0;
for(r = 0; r < 8; r++){
temp = p[r];
temp &= -temp; // Gets the LSB of p[r]
((newByte & (1 << r)) >> r) |= temp; //This line does not work
}
return newByte;
}
对于没有工作的线路我试图将newByte的rth int设置为LSD,这样我就可以将00000000变成像10100001这样的任何帮助都会有很大帮助
答案 0 :(得分:1)
您无法分配到表达式。为简化问题:a + 1 = b
无效。改为将其改为a = b - 1
。
我会这样做:
for(r = 0; r < 8; r++){
newByte |= (p[r] & 1) >> r;
}
答案 1 :(得分:0)
将比特累加到目标中的一种常用方法是向左移位前一个值,然后在新位中移位:newByte = (newByte << 1) | (temp & 0x01)
在上面的代码中,该行的左侧是,&#34;此行不起作用&#34;似乎不是分配操作的有效目标。