首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从uint8小端数组到uint16大端数组

从uint8小端数组到uint16大端数组
EN

Stack Overflow用户
提问于 2018-06-26 02:54:22
回答 1查看 848关注 0票数 2

在Python2.7中,通过USB批量传输,我从相机获得了一个图像帧:

代码语言:javascript
复制
frame = dev.read(0x81, 0x2B6B0, 1000)

我知道一帧是342x260 = 88920像素的低端,因为我从批量传输中读取了2x88920 = 177840 (0x2B6B0)。

如何将typecode=B帧数组的内容转换为uint16高字节顺序数组?

EN

回答 1

Stack Overflow用户

发布于 2018-06-27 00:33:41

下面这样的代码应该能起到作用:

代码语言:javascript
复制
frame_short_swapped = array.array('H', ((j << 8) | i
                                        for (i,j)
                                        in zip(frame[::2], frame[1::2])))

它将来自frame的两个连续字节配对并解压缩成ij。将j左移一个字节,并使用i对其进行or,有效地交换字节(也称为2字节类型的字节顺序转换),并将其提供给H类型的数组。我有点担心这一点,因为它应该对应于C short类型(根据文档),但类型大小实际上只能保证最小长度。我猜如果严格要求的话,你需要引入ctypes.c_uint16

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

https://stackoverflow.com/questions/51030163

复制
相关文章

相似问题

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