我的标题可能看起来很奇怪,因为 Python 中没有 uchar 和 ushort 这样的东西,所以让我解释一下: 我从批量传输中获得了 8 位数据的列表,但我需要 16 位的数据。因此我这样做:
frame = dev.read(0x82, packetLength, interface, timeout) # bulk transfer
if len(frame) == packetLength
for i in range(0, packetLength, 2):
newFrame.append(frame[i+1]*256 + frame[i])
所以是的,它可以工作,但它非常慢,我需要在 Raspberry Pi 上运行它......
你们中有人知道做同样事情的更好方法吗?
最佳答案
使用 struct
,解决方案是:
import struct
frame = dev.read( ... )
fmt = "<%dH" % (len(frame) / 2)
newFrame = struct.unpack(fmt, frame)
fmt
的解释字符串:
-
<
- 数据采用小端格式 -
%d
- 数组的大小(它修改以下格式说明符) -
H
- 格式说明符 将数据解释为 ushorts
关于python - uchar 在 python 中 ushort,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33697414/