我正在从socket中读取一个字节数组/列表。 我希望Python将第一个字节视为“无符号8位整数”。 如何获取它的整数值作为无符号8位整数?
我正在从socket中读取一个字节数组/列表。 我希望Python将第一个字节视为“无符号8位整数”。 如何获取它的整数值作为无符号8位整数?
import struct
value = struct.unpack('B', data[0:1])[0]
0:1
),因为否则Python 3会自动转换为整数。bytes/bytearray是一个整数序列。如果你根据索引访问它的元素,你会得到一个整数:
>>> b'abc'
b'abc'
>>> _[0]
97
根据它们的定义,字节和字节数组中包含在range(0,256)
范围内的整数。因此它们是“无符号8位整数”。
python-3.x
的原因吧,我猜。 - SilentGhost如果您只需要第一个字节的整数值,另一个非常合理且简单的选项是以下内容:
value = ord(data[0])
如果你想一次性解包你接收到的所有元素(而它们不仅仅是一个同质数组),或者你正在处理像32位整数这样的多字节对象,那么你需要使用类似于struct模块的东西。
numpy
,则其中一些函数需要一个dtype
参数,您可以将其设置为numpy.uint8
。例如:bytestream = numpy.fromfile(infile, dtype=numpy.uint8)
- CrazyPyro