我正在从套接字中阅读字节数组/列表。我希望Python将第一个字节视为“无符号8位整数”。如何将其整数值作为无符号8位整数获取?
ntjbwcob1#
使用struct模块。
import struct value = struct.unpack('B', data[0:1])[0]
我们必须指定1(0:1)的范围,因为Python 3会自动转换为整数。请注意,unpack总是返回一个元组,即使您只解包一个项。再看看this SO question。
0:1
kgsdhlau2#
bytes/bytearray是一个整数序列。如果你只是通过索引访问一个元素,你会得到一个整数:
>>> b'abc' b'abc' >>> _[0] 97
根据它们的定义,bytes和bytearrays包含range(0, 256)中的整数。所以它们是“无符号8位整数”。
range(0, 256)
jecbmhm33#
另一个非常合理和简单的选择,如果你只需要第一个字节的整数值,将是如下所示:
value = ord(data[0])
如果你想一次解包所有接收数据的元素(它们不仅仅是一个同构数组),或者如果你正在处理多字节对象,比如32位整数,那么你需要使用类似于struct模块的东西。
3条答案
按热度按时间ntjbwcob1#
使用struct模块。
我们必须指定1(
0:1
)的范围,因为Python 3会自动转换为整数。请注意,unpack总是返回一个元组,即使您只解包一个项。
再看看this SO question。
kgsdhlau2#
bytes/bytearray是一个整数序列。如果你只是通过索引访问一个元素,你会得到一个整数:
根据它们的定义,bytes和bytearrays包含
range(0, 256)
中的整数。所以它们是“无符号8位整数”。jecbmhm33#
另一个非常合理和简单的选择,如果你只需要第一个字节的整数值,将是如下所示:
如果你想一次解包所有接收数据的元素(它们不仅仅是一个同构数组),或者如果你正在处理多字节对象,比如32位整数,那么你需要使用类似于struct模块的东西。