【问题标题】:C++ read the whole file in binary and print it on screen [closed]C ++以二进制格式读取整个文件并将其打印在屏幕上[关闭]
【发布时间】:2014-01-13 01:08:40
【问题描述】:

我真的试过不去问这个,但是在这里搜索了几天之后。

我需要编写一个程序来打开一个名为 "input.bin" 的文件,并将其以二进制形式从头到尾打印到屏幕上。

虽然它对每个字节执行此操作,但它会将 00000101 添加到每个字节并将其打印在 "result.bin"

    (for example 01001010
                +00000101
                =01001111
and 11111111
   +00000101
   =00000100)

【问题讨论】:

  • 你能告诉我们你尝试了什么吗?
  • 我真的一无所获。这是我使用最多stackoverflow.com/questions/10195343/… 的代码,但不知何故,我认为我应该使用 unsigned char 而不是 char。这种位操作在网上很难找到,好像现在没有人对它感兴趣。这是我的作业,所以我真的不能向教授寻求帮助。
  • 这里实际上不需要任何位操作。根据您的描述,您正在读取字节,添加 5 并写入字节。执行此操作的代码可能比您想象的要简单得多。
  • 我同意,仍然需要在屏幕上打印出来。让我感到困惑的另一件事是,如果我有 0xfa,0xfa+0x05=0xff 会变成 EOF 字符吗?
  • 不,没有“EOF 字符”之类的东西。 fgetc() 之类的函数可以返回特殊值 EOF,但这不是一个有效字符(即不能将其放入文件中,也不能从文件中读取)。跨度>

标签: c++ iostream


【解决方案1】:

明确编写代码对我来说太简单了,但这应该对您有所帮助:

  • 打开“input.bin”以读取二进制文件
  • 打开“output.bin”进行写入
  • 读取每个字节,使用辅助函数在屏幕上打印二进制值
  • 加 5(不需要做任何特别的事情,直接加 5 并确保使用 unsigned char 类型)并将字节的值写入 output.bin
  • EOF 时,remove("input.bin");并重命名("output.bin", "input.bin");

有关一次读取单个字符并检查 EOF 的良好提示:http://www.cplusplus.com/reference/cstdio/fgetc/

对于打印二进制数字,这个问题已经回答了很多次: Is there a printf converter to print in binary format?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多