【问题标题】:uchar to ushort in pythonpython中的uchar到ushort
【发布时间】:2015-11-16 16:58:25
【问题描述】:

我的标题可能看起来很奇怪,因为 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 上运行它...

你们中有人知道做同样事情的更好方法吗?

【问题讨论】:

  • 准确来说dev.read()返回的是什么数据结构?
  • 实际上,这相当快。您需要多快?
  • 也许移位和屏蔽比乘以 256 更有效。例如:y = (x

标签: python type-conversion


【解决方案1】:

使用struct,解决方案是:

import struct

frame = dev.read( ... )

fmt = "<%dH" % (len(frame) / 2)
newFrame = struct.unpack(fmt, frame)

fmt字符串的解释:

  • &lt; - 数据采用 little-endian 格式
  • %d - 数组的大小(它修改以下格式说明符)
  • H - 格式说明符将数据解释为 ushorts

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-29
    • 1970-01-01
    • 1970-01-01
    • 2012-04-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多