【问题标题】:Bits to Byte in C++C++ 中的字节到字节
【发布时间】:2013-03-09 23:29:45
【问题描述】:

我正在尝试:

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

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

【问题讨论】:

  • 你应该尝试过一些东西,但被一个错误卡住了,然后用所说的代码问你的问题。您能否提供给您带来问题的代码?
  • 看看std::bitset,它可能对你有帮助。
  • 你能先检查this post吗?

标签: c++ byte bits


【解决方案1】:

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

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);
}

【讨论】:

  • 你现在可以自己构建字节了吗?
  • 如果您遇到困难,我建议您提出一个新问题 - 仅发布您拥有的字节构建代码,并说出问题所在。
【解决方案2】:

一种简单的方法是屏蔽其余位,如您在way to read individual bits 中所见。

【讨论】:

  • 这个链接也有答案,你可以回答
猜你喜欢
  • 1970-01-01
  • 2021-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-22
  • 2013-08-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多