关于python:读取MIDI文件时将十六进制转换为整数

Hex to integer when reading MIDI file

这可能是一个简单的问题。我正在使用Python 3读取二进制MIDI文件,但在理解如何将十六进制值\\x00\\x00\\x00\\x06转换为整数时遇到问题,因为我不知道如何处理斜杠\\。为了获得该值,我使用了

1
2
3
with open("/path/to/midi/file.mid","rb") as f:
    header_chunk = f.read(4)
    length = f.read(4)

length最终具有一个值为b"\\x00\\x00\\x00\\x06"的字节对象。可以使用struct.unpack("cccc", length)将这个值解压缩为相应的数字,但是它将返回带有十六进制数字的元组,其中包含\\(b'\\x00', b'\\x00', b'\\x00', b'\\x06')。是否有内置的方法可以将这些数字按原样(如以length或以单个方式)转换为整数,而不必手动处理\\?在此先感谢您。


是的,确定:

1
2
3
4
>>> length
b'\\x00\\x00\\x00\\x06'
>>> list(length)
[0, 0, 0, 6]

注意,如果访问bytes对象的各个元素,则会得到int作为回报:

1
2
3
4
5
6
7
8
9
>>> length[0]
0
>>> length[1]
0
>>> length[2]
0
>>> length[3]
6
>>>