【问题标题】:Convert text file containing 0 &1 to binary file将包含 0 &1 的文本文件转换为二进制文件
【发布时间】:2014-05-30 01:19:45
【问题描述】:

您好,我刚刚用 c++ 编写了一个用于 Huffman Encoding 的程序,我在其中获取一个文本文件,以 0 和 1 的形式对其进行编码,然后将其另存为另一个文本文件。但是,这并不能解决我的目的,因为它占用了更多空间。

所以我想知道如何将包含这些 0 和 1 的文本文件转换为二进制格式。

提前谢谢你。 :)

【问题讨论】:

  • 为此使用位逻辑。位移(
  • 您可能会保存为 ASCII“1”和 ASCII“0”,它们本身占用与任何其他字符一样多的位,您希望保存为直位,但可能需要查看一些代码展示您遇到的问题。

标签: c++ text-files binaryfiles


【解决方案1】:

您可以循环文本,每次迭代从文本中读取 8 个字符,将此数字转换为单个 BYTE 并将此字节写入带有 ios::binary 的文件

更新:这可能需要您知道您的机器是小/大端,这取决于您如何转换为 BYTE

【讨论】:

  • 嗯,我明白了你解释的逻辑,但我不太清楚如何将 8bytes char 转换为单个字节。另外,我对 Endian 概念有一点了解。您能否提供一些解释这一点的链接?非常感谢。
  • 您可以使用strtol 进行转换,这是一个示例:char* binStr; long binary = strtol(binStr, NULL, 2); //32 chars, not 8 as I suggested 但是请阅读有关 strtol 的信息,因为它可以通过一个循环解析您的整个文本。另请阅读 here 关于字节序(或访问 Wikipedia)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 2013-08-20
  • 1970-01-01
  • 2017-07-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多