在解析一個二進制文件的時候,想把讀取的單個的byte轉換為python的char類型值
f = file(...)
buf = f.read(1024)
int(buf[0])
結果總是報錯:ValueError: invalid literal for int() with base 10: ‘\x90′
這裡找到了對這個問題的解釋和解決的辦法:
在python中,file.read 得到的結果是string, 要轉換成別的類型,需要用到struct。
import struct
...
value = struct.unpack(fmt, buf[0])[0]
關於 struct.unpack 的用法,可以參考這個鏈接,其中有 fmt 的詳細的說明。
舉例來講,如果是想轉換成unsigned char,就用:
uchar = struct.unpack('B', buf[0])[0]