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

use*_*250 8 python binary python-2.7

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

file = open(filePath, "rb")
with file:
    byte = file.read(1)
    print byte
Run Code Online (Sandbox Code Playgroud)

Hol*_*rel 9

得到二进制表示我认为你需要导入binascii,然后:

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

或者,细分:

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))
Run Code Online (Sandbox Code Playgroud)

将输出:

hex: 64, decimal: 100, binary: 01100100
Run Code Online (Sandbox Code Playgroud)


bru*_*ers 8

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

要获得"二进制"表示,您可以在这里查看:将二进制转换为ASCII,反之亦然,但这不会给您提供比实际更多的"原始二进制数据"...

现在的问题是:为什么要将这些数据准确地称为"0和1"?