Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Python字节转换为;无符号8位整数“;_Python_Python 3.x - Fatal编程技术网

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

将Python字节转换为;无符号8位整数“;,python,python-3.x,Python,Python 3.x,我正在从套接字读取字节数组/列表。我希望Python将第一个字节视为“无符号8位整数”。如何才能将其整数值获取为无符号8位整数?字节/bytearray是一个整数序列。如果仅通过索引访问元素,则将得到一个整数: >>> b'abc' b'abc' >>> _[0] 97 根据定义,字节和字节数组包含范围(0256)内的整数。所以它们是“无符号8位整数”。使用模块 请注意,解包总是返回一个元组,即使您只解包一项 另外,请看一看。如果您只需要第一个字节的整数值,

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

字节/bytearray是一个整数序列。如果仅通过索引访问元素,则将得到一个整数:

>>> b'abc'
b'abc'
>>> _[0]
97
根据定义,字节和字节数组包含
范围(0256)
内的整数。所以它们是“无符号8位整数”。

使用模块

请注意,解包总是返回一个元组,即使您只解包一项


另外,请看一看。

如果您只需要第一个字节的整数值,另一个非常合理且简单的选项如下所示:

value = ord(data[0])

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

例如,我在服务器端代码data=conn.recv(1000000)中有这个只要我理解,我就会收到字节。。。因此,我希望数据[0]被视为“无符号8位整数”。这怎么可能呢?这只适用于Python3.x。Python 2.6有b'string literal'语法,但它只是str的别名,旧版本会给您一个语法错误。@musicinmybrain:这就是为什么这个问题被标记为
Python-3.x
I猜想struct.unpack('b',data[0])[1]中存储了什么?data[0]是您收到的第一个字节。解包(“B”,数据[0])将该字节视为8位无符号整数(在C中称为无符号字符),并返回包含该整数的元组(如果传递两个字节进行解包,您将执行类似解包(“BB”,数据[0:2]),然后返回一个2元组)。最后一个[0]获取元组中的第一个(也是唯一的)项。在本例中,它是一个包含一个元素的元组,因此struct.unpack('B',data[0])[1]将引发索引器。[是struct的一个典型用法示例。如果您愿意依赖于
numpy
,则其某些函数采用
dtype
arg,您可以将其设置为
numpy.uint8
。示例:
bytestream=numpy.fromfile(infle,dtype=numpy.uint8)
value = ord(data[0])