我想读取文件的原始二进制文件并将其放入字符串中。目前我打开一个带有“rb”标志的文件并打印字节,但它会以ASCII字符形式出现(对于文本来说,对于视频和音频文件,它会给出符号和乱码)。如果可能的话,我想获得原始的0和1。这需要适用于音频和视频文件,因此只需将ascii转换为二进制文件就不是一种选择。
file = open(filePath, "rb")
with file:
byte = file.read(1)
print byte
答案 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”吗?