我如何将每个字节放入列表

How do i get each byte into a list

我想打开一个 MIDI 文件并分析每个字节。但是我非常不熟悉处理字节和位。 Midi 是用十六进制写的,如果有什么不同的话。

我想做的是将每个字节放入一个列表中,然后做一个for循环来检查每个字节。我该怎么做?

我已经走到这一步(不是很远):

# Open MIDI file
mFile = open("test.mid", 'rb')

# Checks if file is MIDI
hChunk = mFile.read(4)
if hChunk != b'MThd':
    raise ValueError('Not a MIDI file')

print(mFile.read())

另外,如果哪位大佬有通俗易懂的MIDI格式解释链接,不胜感激! :)

刚刚完成扫描前 40 个字节数据的代码。它使用类似 C 的 % 格式和更多 pythonic format 方法打印十进制值和十六进制值,如果格式规范是十六进制,这可能更容易理解。

midi 文件已下载 here 并保存在脚本目录中(因此奇怪的 __file__ 东西在测试时计算正确的目录)

import os

# Open MIDI file
mFile = open(os.path.join(os.path.dirname(__file__),"MIDI_sample.mid"), 'rb')

# Checks if file is MIDI
hChunk = mFile.read(4)
if hChunk != b'MThd':
    raise ValueError('Not a MIDI file')

contents = mFile.read()
mFile.close()

total_len = len(contents)

for i in range(0,40):
    print(contents[i],"x%02X"% contents[i],"x{:02X}".format(contents[i]))