gpt4 book ai didi

c - 使用循环将 7 位放入一个字节

转载 作者:太空宇宙 更新时间:2023-11-04 06:56:49 24 4
gpt4 key购买 nike

我试图通过循环将 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);
}

关于c - 使用循环将 7 位放入一个字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43332041/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com