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

时间:2013-11-15 15:43:19

标签: python python-2.7 binary

我想读取文件的原始二进制文件并将其放入字符串中。目前我打开一个带有“rb”标志的文件并打印字节,但它会以ASCII字符形式出现(对于文本来说,对于视频和音频文件,它会给出符号和乱码)。如果可能的话,我想获得原始的0和1。这需要适用于音频和视频文件,因此只需将ascii转换为二进制文件就不是一种选择。

file = open(filePath, "rb")
with file:
    byte = file.read(1)
    print byte

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:8)

您正在阅读的内容实际上是“二进制”文件的“原始二进制”内容。看起来很奇怪,二进制数据不是“0和1”,而是二进制单词(又名字节,cf http://en.wikipedia.org/wiki/Byte),它们具有整数(基数10)值且可以被解释为ascii chars。或者作为整数(通常是二进制操作的方式)。或者以十六进制表示。对于它的价值,“text”实际上也是<原始二进制数据

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

现在的问题是:为什么你真的希望这些数据为“0和1”吗?