【发布时间】:2022-10-07 19:04:18
【问题描述】:
我有一个字节数组,它由 4 个字节组成,其中每个字节代表 -128..127 范围内的一个单字节。如何转换这个?
表示值的字节数组:-1、15、1 和 -2 由以下方式创建:
data = bytearray()
data.extend([0xff, 0x0f, 0x01, 0xfe])
现在我尝试用这段代码转换它:
import struct
my_signed_byte = struct.unpack(\"b\", data[0])[0]
这会引发错误:
TypeError:需要一个类似字节的对象,而不是 \'int\'
发生这种情况,因为数据[0]确实返回一个 int 和不是字节数组.
-
但是如果你有 4 个字节,你可以使用
struct.unpack(\"bbbb\", data)。 -
目前尚不清楚您要在这里做什么。如果
data[0]已经是一个int,为什么还要使用struct.unpack?你的问题说你想转换它至一个int,但错误说你已经有了一个。 -
@kaya3 因为
data[0]是错误的整数。 -
如果问题只是如何将 int 放入 -128 到 127 的范围内,您可以编写
x if x <= 127 else x - 256。
标签: python