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(
另外,我不允许使用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,它可能会帮你解决这个问题。你能先检查一下吗?这个链接也有答案,你现在可以自己构建字节了吗?如果你被卡住了,我建议问一个新的问题-只发布你的字节构建代码,然后说你出了什么问题。