C++ 使用 "putchar" 输出二进制单词
C++ Using "putchar" to output a word in Binary
我的函数:
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时,二进制.bin的二进制表示形式为00110000 00110000 0011000000110001。
应该是000000000000000000000001。(注意:一个字是32位)
00110000 00110000 0011000000110001是0001(30 30 31)的ascii表示。
出了什么问题?
问题是operator<<
。流插入运算符用于将其输入转换为文本格式,并将格式化后的文本传递给流。
file << putchar((word >> 24) & 0xff);
^^----> this is the problem.
您需要使用不执行翻译的流方法,例如std::ostream::put
或std::ostream::write
。
此外,请注意putchar
函数将其参数写入控制台,如果成功,则返回参数
请参阅putchar的说明。
您的错误是试图使用文本模式函数以二进制编写。您应该使用file::put(char)
。比如:
void output(int word)
{
file.put(word >> 24);
file.put(word >> 16);
file.put(word >> 8);
file.put(word);
}
由于file.put
只取char
,所以不需要将结果与0xff相加,所以我省略了它。
此外,我不明白你为什么要使用putchar()
。它只打印到控制台,而不是文件。
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 文本文件中的单词链表
- 有根的二进制搜索树.保留与其父级的链接
- 多态二进制函数
- 在指针的帮助下,文本文件中单词的频率
- 正在读取二进制文件(is_open)
- visual在c++中将十进制数转换为二进制数
- C++十进制到二进制,如何转换
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- 二进制搜索树叶数问题
- 如何将一个ostringstream十六进制字符串字符对转换为单个unit8t等价的二进制值
- 为什么二进制搜索在我的测试中不起作用
- 重载==不适用于二进制树
- 如何根据单词在文本中出现的概率输出单词
- 正在尝试重载二进制搜索树分配运算符
- 在C++中将类(带有Vector成员)保存为二进制文件
- 从字符串变量中逐字符读取单词
- 使用std::mt19937从字符串中返回一个随机单词
- 如何从二进制文件中读取字符串
- C++ 使用 "putchar" 输出二进制单词