我想读取文件的原始二进制文件并将其放入字符串中。目前,我正在打开带有“ rb”标志的文件并打印字节,但它以ASCII字符显示(对于文本,即对于视频和音频文件,它给出了符号和乱码)。如果可能的话,我想获取原始的0和1。这也需要用于音频和视频文件,因此不能简单地将ascii转换为二进制。
with open(filePath, "rb") as file:
byte = file.read(1)
print byte
要获得二进制表示形式,我认为您需要导入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
您正在阅读的内容实际上是您的“二进制”文件的“原始二进制”内容。看起来很奇怪,二进制数据不是“ 0和1”,而是二进制words(又名字节,比照http://en.wikipedia.org/wiki/Byte),其整数值(以10为基数)和can被解释为ascii字符或作为整数(通常是二进制操作)。或为十六进制。对于它的价值,“文本” is实际上也“原始二进制数据”。
要获得“二进制”表示形式,您可以在这里查看:Convert binary to ASCII and vice versa,但这不会给您比实际拥有的更多”原始二进制数据” ...
现在的问题:为什么您是否要将这些数据精确地设置为“ 0和1”?