我正在读取socket中的字节数组/列表。我希望Python将第一个字节视为“无符号8位整数”。如何将其整数值作为无符号8位整数?
答案 0 :(得分:20)
使用struct模块。
import struct
value = struct.unpack('B', data[0])[0]
请注意,即使您只打开一个项目,unpack也会返回一个元组。
另外,请查看this SO question。
答案 1 :(得分:7)
bytes / bytearray是一个整数序列。如果您只是通过索引访问元素,那么您将有一个整数:
>>> b'abc'
b'abc'
>>> _[0]
97
根据它们的定义,字节和字节数组包含range(0, 256)
中的整数。所以它们是“无符号8位整数”。
答案 2 :(得分:7)
另一个非常合理和简单的选项,如果你只需要第一个字节的整数值,就会出现如下情况:
value = ord(data[0])
如果要一次解包所接收数据的所有元素(并且它们不仅仅是一个同类数组),或者如果您正在处理多字节对象(如32位整数),那么您需要使用像struct module这样的东西。