Python如何从文件中读取原始二进制文件? (音频/视频/文本)

问题描述 投票:8回答:2

我想读取文件的原始二进制文件并将其放入字符串中。目前,我正在打开带有“ rb”标志的文件并打印字节,但它以ASCII字符显示(对于文本,即对于视频和音频文件,它给出了符号和乱码)。如果可能的话,我想获取原始的0和1。这也需要用于音频和视频文件,因此不能简单地将ascii转换为二进制。

with open(filePath, "rb") as file:
    byte = file.read(1)
    print byte
python python-2.7 binary
2个回答
9
投票

要获得二进制表示形式,我认为您需要导入binascii,然后:

byte = f.read(1)
binary_string = bin(int(binascii.hexlify(byte), 16))[2:].zfill(8)

或细分:

import binascii


filePath = "mysong.mp3"
file = open(filePath, "rb")
with file:
    byte = file.read(1)
    hexadecimal = binascii.hexlify(byte)
    decimal = int(hexadecimal, 16)
    binary = bin(decimal)[2:].zfill(8)
    print("hex: %s, decimal: %s, binary: %s" % (hexadecimal, decimal, binary))

将输出:

hex: 64, decimal: 100, binary: 01100100

8
投票

您正在阅读的内容实际上是您的“二进制”文件的“原始二进制”内容。看起来很奇怪,二进制数据不是“ 0和1”,而是二进制words(又名字节,比照http://en.wikipedia.org/wiki/Byte),其整数值(以10为基数)和can被解释为ascii字符或作为整数(通常是二进制操作)。或为十六进制。对于它的价值,“文本” is实际上也“原始二进制数据”。

要获得“二进制”表示形式,您可以在这里查看:Convert binary to ASCII and vice versa,但这不会给您比实际拥有的更多”原始二进制数据” ...

现在的问题:为什么您是否要将这些数据精确地设置为“ 0和1”?

© www.soinside.com 2019 - 2024. All rights reserved.