首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带有struct.unpack的TypeError错误:需要一个类似字节的对象,而不是'str‘

带有struct.unpack的TypeError错误:需要一个类似字节的对象,而不是'str‘
EN

Stack Overflow用户
提问于 2016-02-07 04:55:00
回答 2查看 10.6K关注 0票数 4

有人能帮忙处理下面的代码和错误吗?我不熟悉python值转换。

生成错误的特定行是:

代码语言:javascript
复制
value = struct.unpack("<h",chr(b)+chr(a))[0]

TypeError:需要一个类似字节的对象,而不是'str‘。

代码片段是:

代码语言:javascript
复制
                    if packet_code ==0x80: # raw value
                        row_length = yield
                        a = yield
                        b = yield
                        value = struct.unpack("<h",chr(b)+chr(a))[0]

输入的数据是:

b'\x04\x80\x02\x00\xb2\xcb\xaa\xaa\x04\x80\x02\x00p\r\xaa\xaa\x04\x80\x02\x00] \xaa\xaa\x04\x80\x02\x00@=\xaa\xaa\x04\x80\x02\x007F\xaa\xaa\x04\x80\x02\x00!\xaa\xaa\x04\x80\x02\x00=@\xaa\xaa\x04\x80\x02\x00=@\xaa\xaa\x04\x80\x02\x00i\xaa\x04\x80\x02\x00] \xaa\xaa\x04\x80\x02\x00p\r\xaa\xaa\x04\x80\x02\x00\x80\xfd\xaa\xaa

我正在使用python3.5。这段代码似乎适用于旧版本。

下面是指向类似解析器代码的链接,其中它可能与先前版本的Python:解析器代码链接一起工作。

下面链接到如何从设备发送数据的说明。 原始波值(16位)

此数据值由两个字节组成,表示单个原始波形示例。它的值是一个有符号的16位整数,范围从-32768到32767.值的第一个字节表示两个互补值的高阶位,而第二个字节表示低阶位。要重建完整的原始波形值,只需将8位留下的第一个字节按位移动--或者用第二个字节:

代码语言:javascript
复制
short raw = (Value[0]<<8) | Value[2];

其中值是高阶字节,值1是低阶字节.

在位操作不便的系统或语言中,可以替换以下算术操作:

代码语言:javascript
复制
raw = Value[0]*256 + Value[1];
if( raw >= 32768 ) raw = raw - 65536;

非常感谢任何帮助,因为我目前被困住了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-07 05:01:32

当您使用Python2.x时,str是一个字节数组。对于Python3,您必须像这样使用bytes

代码语言:javascript
复制
struct.unpack("<h", bytes([b, a]))[0]
票数 6
EN

Stack Overflow用户

发布于 2022-05-31 17:30:14

如果使用python3,则可以对接收到的数据使用以下行,并将其转换为短数据类型。

代码语言:javascript
复制
struct.unpack('<h', data)
struct.unpack('<h', data[0:4])
struct.unpack('<h', b''.join(…))

如果它以列表的形式接收数据,则将数组转换为字节:

代码语言:javascript
复制
struct.unpack('<h', bytes(data))

记住,您必须将信息转换为字节,而不是以str的形式发送,以便使用解压缩和解压缩所需的数据类型中的信息。

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

https://stackoverflow.com/questions/35249879

复制
相关文章

相似问题

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