首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python struct.pack()数据范围错误

Python struct.pack()数据范围错误
EN

Stack Overflow用户
提问于 2017-03-24 23:18:13
回答 1查看 9.7K关注 0票数 2

我使用python2.7,我有这个代码。数据值从0到65792不等。

代码语言:javascript
复制
data_length=30
code=202
data=[51400,31400,100,51400,31400,100,51400,31400,100]
checksum = 0
total_data = ['$', 'M', '<', data_length, code] + data
for i in struct.pack('<2B%dh' % len(data), *total_data[3:len(total_data)]):
    checksum = checksum ^ ord(i)
total_data.append(checksum)
try:
    b = None
    b = self.ser.write(struct.pack('<3c2B%dhB' % len(data), *total_data))
except Exception, error:
    print "\n\nError in sendCMD."
    print "("+str(error)+")\n\n"
    pass

struct.pack('<2B%dh' % len(data), *total_data[3:len(total_data)]):

并给出了这个错误:

代码语言:javascript
复制
for i in struct.pack('<2B%dh' % len(data), *total_data[3:len(total_data)]):
struct.error: short format requires SHRT_MIN <= number <= SHRT_MAX
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-24 23:30:05

SHRT_MAX被定义为0x7FFF (32767),因为短裤是签名的:Reference/limits.h

也许你想要未签名的短消息?H in struct.packhttps://docs.python.org/2/library/struct.html#format-characters

编辑:即使这样,在您的最大范围内的值(65792)也会溢出无符号短--您需要一个更大的容器,例如int (i)或无符号int (I)来处理这些值。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43010646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档