【问题标题】:File manipulation in binary [closed]二进制文件操作[关闭]
【发布时间】:2014-10-25 03:12:21
【问题描述】:

是否可以将文件 text/image/mp3 转换为仅由其组成的二进制代码,然后在 python 或任何语言中进行操作。我在网上查了一下,二进制文件被提到了很多,但没有什么特别有用或连贯的。感谢您提供任何信息,我已经完成了相当多的高级编程,所以现在想扩展一下。

【问题讨论】:

  • 什么意思? MP3 文件和 jpeg 文件已经是“二进制”(例如不是人类可读的文本)格式。
  • 尝试od -xc YourBinaryFilename查看十六进制数据。

标签: python file binary file-manipulation


【解决方案1】:

如果要操作二进制文件,请使用 rb (read binary) 和 wb (write binary)file modes:

with open('binary_file.mp3', 'rb') as f:
    first_byte = f.read(1)

需要明确的是,所有文件都是二进制文件。一些二进制文件可以解释为文本文件,但它们仍然以二进制形式存储在下面。这样想,文件就是一串数字,数字只能在 0 到 255 的范围内。然后在 60 和 70 年代,一些美国人认为如果你看到数字 65,它实际上是大写字母“A ",然后 66 是 "B" 等等。然后 97 是小写 "a" 98 是 "b" 等等。我们永远不会使用大于 127 的数字。您可以提出自己的数字到字母的映射(以及其他不同国家的人did),但您可能应该使用人们或多或少都同意使用的映射,称为ASCII(及其扩展名UTF-8)。如果您想查看文件背后的实际数字,您需要一个十六进制编辑器。但它们代表数字not like we are used to

如果您想查看文件的实际 1 和 0 是什么,只需使用这个(:= operator 需要 Python 3.8+)

with open('binary_file_name', 'rb') as f:
    while byte := f.read(1):
        print(f'{ord(byte):08b}')

【讨论】:

    【解决方案2】:

    二进制文件只是一个字节数组,大多数编程语言都处理数组,没有“二进制代码”转换要做。然后存在二进制格式来区分文件类型(例如,mp3 中的图像),因为如果您首先赋予它们含义,您只能解释原始字节。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-13
      • 2014-01-08
      • 1970-01-01
      • 2011-11-25
      • 1970-01-01
      相关资源
      最近更新 更多