首页 > 解决方案 > 将 8 位移动到 8 个单独字节的最佳方法

问题描述

我有一个 8 位的状态寄存器。我想将每个单独的位移动到一个字节以进行进一步处理。看起来应该很容易,但我想出的每一个解决方案都很复杂。我正在考虑使用 for next 循环遍历这些位并将它们转储到一个数组中,但我的解决方案太混乱了。

标签: cbit

解决方案


这基本上就是你想要做的事情。它使用按位运算符和一个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第 th 位status

如果您想颠倒存储位的顺序,只需更改bits[ctr]bits[(8-1)-ctr].


推荐阅读