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

bbb*_*bbb 18 python python-3.x

我正在读取socket中的字节数组/列表.我希望Python将第一个字节视为"无符号8位整数".如何将其整数值作为无符号8位整数?

cod*_*ape 21

使用struct模块.

import struct
value = struct.unpack('B', data[0])[0]
Run Code Online (Sandbox Code Playgroud)

请注意,即使您只打开一个项目,unpack也会返回一个元组.

另外,看看这个SO问题.


Sil*_*ost 7

bytes/bytearray是一个整数序列.如果您只是通过索引访问元素,那么您将拥有一个整数:

>>> b'abc'
b'abc'
>>> _[0]
97
Run Code Online (Sandbox Code Playgroud)

按照它们的定义,字节和字节数组包含整数range(0, 256).所以它们是"无符号8位整数".


mus*_*ain 7

另一个非常合理和简单的选项,如果你只需要第一个字节的整数值,将类似于以下内容:

value = ord(data[0])
Run Code Online (Sandbox Code Playgroud)

如果你想一次解包所接收数据的所有元素(并且它们不仅仅是一个同构数组),或者如果你正在处理像32位整数这样的多字节对象,那么你需要使用像结构模块.