2016-03-02 51 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