2017-04-20 64 views
2

這可能是一個簡單的問題。我正在閱讀使用Python 3的二進制MIDI文件,而且我在理解如何將十六進制值\x00\x00\x00\x06轉換爲整數時遇到問題,因爲我不知道如何處理斜槓\。爲了得到這個數值我使用讀取MIDI文件時十六進制爲整數

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" bytes對象。該值可以使用struct.unpack("cccc", length)解壓縮到相應的數字中,但是這會返回包含\,(b'\x00', b'\x00', b'\x00', b'\x06')的十六進制數字的元組。是否有內置的方式可以將這些數字按照批量(如length或個人風格)轉換爲整數,而無需手動處理\?先謝謝了。

回答

1

是的,當然:

>>> length 
b'\x00\x00\x00\x06' 
>>> list(length) 
[0, 0, 0, 6] 

請注意,如果您訪問bytes對象的單個元素,你得到的回報的int

>>> length[0] 
0 
>>> length[1] 
0 
>>> length[2] 
0 
>>> length[3] 
6 
>>>