C++ C+中的位到字节+;

C++ C+中的位到字节+;,c++,byte,bits,C++,Byte,Bits,我正试图: 将一组值为0或1的8个整数转换为一个字节 反转该字节的位顺序 打印该字节的值(以什么格式?)(我可以猜到它就在这里) 另外,我不允许使用STL来解决这个问题。一个简单的方法是屏蔽其余的位,正如您在中所看到的。因此,您希望反转字节中的位。也就是说,位应移动,以便: from: 7 6 5 4 3 2 1 0 to: 0 1 2 3 4 5 6 7 这段代码可以做到这一点,不公平-如果您搜索,您可以找到更好的算法。你能看到它是如何工作的吗 uint8_t reverse_bits(

我正试图:

  • 将一组值为0或1的8个整数转换为一个字节
  • 反转该字节的位顺序
  • 打印该字节的值(以什么格式?)(我可以猜到它就在这里)

  • 另外,我不允许使用STL来解决这个问题。

    一个简单的方法是屏蔽其余的位,正如您在中所看到的。

    因此,您希望反转字节中的位。也就是说,位应移动,以便:

    from: 7 6 5 4 3 2 1 0
    to:   0 1 2 3 4 5 6 7
    
    这段代码可以做到这一点,不公平-如果您搜索,您可以找到更好的算法。你能看到它是如何工作的吗

    uint8_t reverse_bits(uint8_t byte)
    {
        return ((byte & 0x01) << 7)
              |((byte & 0x02) << 5)
              |((byte & 0x04) << 3)
              |((byte & 0x08) << 1)
              |((byte & 0x10) >> 1)
              |((byte & 0x20) >> 3)
              |((byte & 0x40) >> 5)
              |((byte & 0x80) >> 7);
    }
    
    uint8\u t反向位(uint8\u t字节)
    {
    返回((字节&0x01)3)
    |((字节&0x40)>>5)
    |((字节&0x80)>>7);
    }
    
    您应该尝试了一些东西,但遇到了一个bug,然后用上面的代码提问。你能提供给你带来问题的代码吗?看看std::bitset,它可能会帮你解决这个问题。你能先检查一下吗?这个链接也有答案,你现在可以自己构建字节了吗?如果你被卡住了,我建议问一个新的问题-只发布你的字节构建代码,然后说你出了什么问题。