<分区>
我有一个 8 位的状态寄存器。我想将每个单独的位移动到一个字节以进行进一步处理。看起来应该很容易,但我想出的每一个解决方案都很复杂。我正在考虑使用 for next 循环遍历这些位并将它们转储到一个数组中,但我的解决方案太困惑了。
<分区>
我有一个 8 位的状态寄存器。我想将每个单独的位移动到一个字节以进行进一步处理。看起来应该很容易,但我想出的每一个解决方案都很复杂。我正在考虑使用 for next 循环遍历这些位并将它们转储到一个数组中,但我的解决方案太困惑了。
最佳答案
这基本上就是您要尝试做的事情。它使用按位运算符和 uint8_t
数组使每个位成为一个单独的字节:
void bits_to_bytes(uint8_t status, uint8_t bits[8])
{
int ctr;
for( ctr = 0; ctr < 8; ctr++ )
{
bits[ctr] = (status >> ctr) & 1;
}
}
好的,所以更深入一点:
此代码循环遍历一个字节中的位,然后分配 bits[bit_number]
到 bit_number
status
的第 1 位.
如果你想反转位的存储顺序,只需更改 bits[ctr]
至 bits[(8-1)-ctr]
.
关于c - 将 8 位移动到 8 个单独字节的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57683704/