如何在二进制中输出int?

use*_*648 15 c++ binary type-conversion

int x = 5;
cout<<(char)x;
Run Code Online (Sandbox Code Playgroud)

上面的代码在原始二进制文件中输出一个int x,但只有1个字节.我需要它做的是输出x作为二进制4字节,因为在我的代码中,x可以是0到2 ^ 32-1之间的任何地方,因为

cout<<(int)x;
Run Code Online (Sandbox Code Playgroud)

不做的伎俩,我该怎么做?

Joh*_*vat 30

有点晚了,但正如Katy在她的博客中所说,这可能是一个优雅的解决方案:

#include <bitset>
#include <iostream>

int main(){
  int x=5;
  std::cout<<std::bitset<32>(x)<<std::endl;
}
Run Code Online (Sandbox Code Playgroud)

取自:https: //katyscode.wordpress.com/2012/05/12/printing-numbers-in-binary-format-in-c/

  • @ v010dya您可以执行类似std :: bitset <sizeof(int)*8>(或std :: bitset <sizeof(decltype(x))*8>)的操作以避免这些假设. (6认同)
  • 可能是最合理的答案.它确实假设我们正在谈论一个32位的int,但我们在几乎所有其他答案中都做了这样的假设. (4认同)
  • 我认为重要的是要注意这个答案并没有回答这个问题。 (2认同)

Jam*_*lis 11

您可以使用std::ostream::write()成员函数:

std::cout.write(reinterpret_cast<const char*>(&x), sizeof x);
Run Code Online (Sandbox Code Playgroud)

请注意,您通常希望使用以二进制模式打开的流来执行此操作.