C ++获取缓冲区的二进制值

Dan*_*iel 7 c++ binary buffer

我真的很抱歉这个问题的措辞,这有点令人困惑。

所以可以说我有一个缓冲区:

char buffer[4] = {0, 0, 2, 0};
Run Code Online (Sandbox Code Playgroud)

如果将其全部转换为二进制,则会得到一个32位无符号整数:

00000000 00000000 00000010 00000000

它的值为512。

所以我的问题是,如何使用c ++达到512的答案?最好具有一些库函数。

感谢您提供任何答案,如果之前曾有人问过我,对此我感到非常抱歉,我找不到它。

Bia*_*sta 8

您可以执行一些按位操作:

unsigned int converter(const char buffer[4]) {
  return (buffer[0] << 24) |
         (buffer[1] << 16) |
         (buffer[2] << 8) |
         (buffer[3]);
}
Run Code Online (Sandbox Code Playgroud)

这里的例子

  • 唯一正确的答案!reinterpret_cast和联合会在其他答案中传播,但标准不允许它们(使用方式)。 (2认同)
  • @AntonF。请向我们展示在哪些情况下不允许将联合用于从一种类型转换为另一种类型... (2认同)