【发布时间】:2020-10-28 03:18:17
【问题描述】:
我正在尝试在 python 中获取音乐 (.mp) 文件的二进制表示。我目前只能以字节表示。当我尝试将这些字节转换为二进制时,我不断收到错误。这是我目前的程序:
folder=os.listdir(os.getcwd())
for files in folder:
if files.endswith(".mp3"):
file = open(files, 'rb')
stream = str(file.read()).split("\\")
print(stream)
for bit in range(1,len(stream)):
"""
print(stream[bit])
newbit = f"0{stream[bit]}"
c = BitArray(hex=newbit)
#print(c.bin)
"""
print(stream[bit][1:])
print(bin(int(stream[bit][1:], base=16)))
我不断收到同样的错误:
line 39, in <module>
print(bin(int(stream[bit][1:], base=16)))
ValueError: invalid literal for int() with base 16: '00Info'
当我去检查语句print(stream) 中的字节时,字节x00Info 没有出现。我以前从未使用过字节,所以我不知道发生了什么。
【问题讨论】:
-
(1) 如果您想稍后使用字节,则不应使用“str”将字节转换为字符串。 (2)“int”类型有一个方法“from_bytes”从字节创建一个int(如果这真的是你想要的)
-
你到底想做什么?你想要零和一?
-
Michael Butscher:是的,这很可能是正确的。但我真的很困惑,有一点“00Info”。这让我很惊讶。布拉德:是的,我想要 0 和 1