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

时间:2009-12-11 11:38:48

标签: python python-3.x

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

3 个答案:

答案 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这样的东西。