将Python字节转换为“无符号8位整数”

93ze6v8z  于 2023-07-01  发布在  Python
关注(0)|答案(3)|浏览(147)

我正在从套接字中阅读字节数组/列表。我希望Python将第一个字节视为“无符号8位整数”。如何将其整数值作为无符号8位整数获取?

ntjbwcob

ntjbwcob1#

使用struct模块。

import struct
value = struct.unpack('B', data[0:1])[0]

我们必须指定1(0:1)的范围,因为Python 3会自动转换为整数。
请注意,unpack总是返回一个元组,即使您只解包一个项。
再看看this SO question

kgsdhlau

kgsdhlau2#

bytes/bytearray是一个整数序列。如果你只是通过索引访问一个元素,你会得到一个整数:

>>> b'abc'
b'abc'
>>> _[0]
97

根据它们的定义,bytes和bytearrays包含range(0, 256)中的整数。所以它们是“无符号8位整数”。

jecbmhm3

jecbmhm33#

另一个非常合理和简单的选择,如果你只需要第一个字节的整数值,将是如下所示:

value = ord(data[0])

如果你想一次解包所有接收数据的元素(它们不仅仅是一个同构数组),或者如果你正在处理多字节对象,比如32位整数,那么你需要使用类似于struct模块的东西。

相关问题