【问题标题】:How to save a string of 1's and 0's as binary to a binary file in Python [closed]如何将1和0的字符串作为二进制保存到Python中的二进制文件[关闭]
【发布时间】:2019-11-17 18:29:26
【问题描述】:

我目前正在尝试为学校完成一个项目,该项目涉及读取音频“wav”文件,使用 golomb 编码器对样本进行编码,将结果写入二进制文件,在另一个脚本上读取该二进制文件并对其进行解码使用哥伦布解码器。 分配指南建议我开发一个 BitStream 类,它可以读取和写入单个位并读取和写入 n 位。 我已经完成了 golomb 编码器和解码器,它似乎运行良好。但是,我在使用 BitStream 部分时遇到了问题。我曾尝试在网上搜索现有的课程,但由于我对编程还很陌生,所以它们看起来都超级复杂。我的 golomb 编码器返回一个 1 和 0 的字符串,解码器使用类似的字符串作为输入。 我的另一个问题是:当我完成二进制文件的编写后,我如何知道每个示例代码的开始和结束位置?如何将采样频率传递给解码器?我如何知道音频样本的左右声道开始和结束的位置?如何编码每个单独样本的哥伦布编码器的 M 参数? 顺便说一句,我应该在 Python 中做到这一点。

提前致谢!

【问题讨论】:

  • 你能不能把这个格式好一点,很难读。能分享一下相关代码吗?见minimal reproducible example。此外,这似乎相当广泛。
  • 我建议您使用b 标志查看open()。我还建议您重新考虑如何实现编码器和解码器以直接处理字节而不是处理 0 和 1 的字符串。
  • Reading and Writing Files ... 欢迎来到 SO。请使用tour 并花时间阅读How to Ask 以及该页面上的其他链接。这不是讨论论坛或教程服务。您应该花一些时间通过the Tutorial 练习这些示例。它将向您介绍 Python 为解决您的问题所提供的工具。
  • 这既不清楚又过于宽泛。请专注于单个问题,并提供相关代码(而不是仅仅影射代码)。

标签: python python-3.x bitstream


【解决方案1】:

一旦你有了二进制文件,你就不必担心音频从哪里开始,等等,库应该为你做这些。要使用位串保存字符串,您可以一次完成所有操作,保存到字符串然后运行 ​​BitStream,如下所示:

BitStream(bin='101010101').tofile(filename)  

您的问题有一些移动部分,但如果您的一个零字符串正在使用 golomb,那么您从 BitString 读取的二进制文件应该可以正常工作。

我有一个提示,我也将它用于霍夫曼编码器。如果您使用编码生成的二进制字符串以“0000”开头,那么在写入之前总是在二进制字符串前面加上一个“1”,并在读取时去掉前面的“1”。这使您不必存储有关二进制缓冲区保存的外部数据,因为二进制必须以前导 1 进行存储

【讨论】:

    猜你喜欢
    • 2017-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-27
    • 1970-01-01
    • 1970-01-01
    • 2013-10-24
    • 2017-04-25
    相关资源
    最近更新 更多