我试着用一个循环将7位放到一个字节(逐位):
unsigned char bytetosend;
unsigned char y[] = { 0x7f };
int x = 0;
int i;
int main()
{
for (i = 0; i < 8; i++)
{
bytetosend = (y[x] & 0x01);
bytetosend >>= 1;
y[x] >>= 1;
}
printf("the out is %x", bytetosend);
}
但是为什么输出是0?
最佳答案
这是因为你在“复制”y[x]
的LSB到bytetosend
的LSB,然后通过将bytetosend
向右移动一个来移除它。
我不知道为什么你需要一点一点地复制,如果你能一次复制整个字节bytetosend = y[x];
,但让我们假设你真的想要它。
那么你可以通过以下方式来实现:
bytetosend = 0;
for (i=0; i < 8; ++i)
{
bytetosend |= y[x] & ((unsigned char)1 << i);
}