我正在使用PySerial(Python 2.7)从这样的设备读取信息:
buffer = ser.read(3)
现在我在缓冲区中有三个字节(即0xAE0259),它是str类型.由于我是Python的新手,我正在寻找“pythonian”方法来切断三个字节的最左边(0xAE),然后将剩下的两个解释为int.
首先我想到了一个掩码:buffer& = 0xFFFF
但是python不会让我在str上使用位运算符.
任何将缓冲区转换为int的尝试都失败了.
然后我读到了’bitstring module’,它让我从BitArray中切出比特范围,但我想用它来做这个有点超过顶部?
解决方法:
您需要知道多字节类型是大端还是小端,以及它是有符号还是无符号.假设两个字节是unsigned,big-endian short,我会做以下事情:
>>> buf = '\xAE\x02\x59'
>>> from struct import unpack
>>> unpack('>BH', buf)
(174, 601)
‘>’意味着大端. ‘B’是您不想要的第一个无符号字节. ‘H’是一张未签约的短片.
标签:python,pyserial 来源: https://codeday.me/bug/20190626/1295246.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。