我如何将每个字节放入列表
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]))
我想打开一个 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]))