2016-03-02 24 views
1

我在Python 2.7中工作,正在讀取數據中的字節(它是一個.ecg文件),但我需要將其轉換爲整數值。將字節轉換爲Int時出錯(Python 2.7)

packetID = int(holter.read(1), 2) 
packetSS = int(holter.read(2), 2) 
packetFB = int(holter.read(2), 2) 

這將返回錯誤

​​

回答

2

它看起來像你正在讀取二進制數據,而不是ASCII碼,所以你需要一種不同的方式來轉換:struct module

import struct 
packetID = struct.unpack('B', holter.read(1))[0] 
packetSS = struct.unpack('H', holter.read(2))[0] 

或者你可以同時讀取所有這些:

packetID, packetSS, packetFB = struct.unpack('BHH', holter.read(5)) 
+0

什麼是B和H的意義是什麼? – jrs11

+0

@ jrs11這些是無符號字節和無符號半字(2字節)的格式代碼。如果您需要簽名,請使用小寫字母「b」或「h」。完整的代碼表位於我鏈接的文檔中。 –

+0

我的新錯誤是:'unpack需要一個長度爲1的字符串參數' – jrs11

0

int()數字'1'字符串表示轉換爲整數。如果要將單字符的字符串轉換爲整數,則可以使用ord()。但是,如果要一次轉換多個字節,則可以使用struct模塊,具體爲struct.unpack