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

22 投票
3 回答
99870 浏览
提问于 2025-04-15 16:55

我正在从套接字中读取一个字节数组或列表。我希望Python把第一个字节当作一个“无符号8位整数”来处理。请问怎么才能把它的整数值当作无符号8位整数来获取呢?

3 个回答

7

如果你只需要获取第一个字节的整数值,一个很简单的办法就是像下面这样做:

value = ord(data[0])

如果你想一次性处理你收到的数据中的所有元素(而这些元素不是同一种类型的数组),或者你在处理像32位整数这样的多字节对象,那么你就需要使用类似于struct模块的工具。

11

字节(bytes)和字节数组(bytearray)是一串整数。如果你通过索引访问其中的一个元素,你会得到一个整数:

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

根据它们的定义,字节和字节数组里的整数范围是从0到255。所以它们被称为“无符号8位整数”。

23

使用 struct 模块。

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

我们需要指定一个范围为 1(0:1),因为如果不这样做,Python 3 会自动转换成整数。

要注意的是,解包操作总是返回一个元组,即使你只解包了一个项目。

另外,可以看看 这个问题

撰写回答