C++使用 "putchar"以二进制形式输出一个字

标签 c++ binary bit-manipulation

我的功能:

void output(int word)
{   
      file << putchar((word >> 24) & 0xff);
      file << putchar((word >> 16) & 0xff);
      file << putchar((word >> 8) & 0xff);
      file << putchar(word & 0xff);
}

其中"file"使用 fstream 将二进制文件从 putchar 输出到名为“binary.bin”的文件中。 当“word”为1时,binary.bin的二进制表示为00110000 00110000 00110000 00110001。

应该是00000000 00000000 00000000 00000001。(注:一个字是32位)

00110000 00110000 00110000 00110001 是 0001 (30 30 30 31) 的 ascii 表示。

出了什么问题?

最佳答案

问题是operator<< .流插入运算符旨在将其输入转换为文本格式并将格式化的文本传递给流。

  file << putchar((word >> 24) & 0xff);
       ^^----> this is the problem.

您将需要使用不执行翻译的流方法,例如 std::ostream::putstd::ostream::write .

另外,请注意 putchar函数将其参数写入控制台并在成功时返回参数。
参见 explanation of putchar.

关于C++使用 "putchar"以二进制形式输出一个字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26303013/

相关文章:

c# - 在 C# 中计算整数 log2 的最快方法是什么?

c# - Bitwise-or 似乎隐式转换为 long。这可以避免吗?

c++ - 为什么下面的代码在C++中是非法的

c++ - fetch_sub 真的是原子的吗?

math - 二进制文件中的熵 - 目的是什么?

java - java中如何压缩一串0和1

c++ - 代码守卫失败,模板来自字符串文字

c++ - C++ 中的默认结构初始化

javascript - ArrayBufferView 未捕获错误 : INDEX_SIZE_ERR: DOM Exception 1

math - 我的位逻辑太过时了。需要进修