Ответ 1
Используйте модуль struct.
import struct
value = struct.unpack('B', data[0])[0]
Обратите внимание, что распаковка всегда возвращает кортеж, даже если вы только распаковываете один элемент.
Кроме того, посмотрите этот вопрос SO.
Я читаю в байтовом массиве/списке из сокета. Я хочу, чтобы Python обрабатывал первый байт как "неподписанное 8-битное целое число". Как можно получить целое значение в виде 8-битного целого числа без знака?
Используйте модуль struct.
import struct
value = struct.unpack('B', data[0])[0]
Обратите внимание, что распаковка всегда возвращает кортеж, даже если вы только распаковываете один элемент.
Кроме того, посмотрите этот вопрос SO.
bytes/bytearray - последовательность целых чисел. Если вы просто получаете доступ к элементу по его индексу, вы получите целое число:
>>> b'abc'
b'abc'
>>> _[0]
97
По самому своему определению байты и байты содержат целые числа в range(0, 256)
. Таким образом, они представляют собой "неподписанные 8-битные целые числа".
Еще один очень разумный и простой вариант, если вам нужно только первое целочисленное значение байта, будет примерно следующим:
value = ord(data[0])
Если вы хотите сразу распаковать все элементы ваших полученных данных (и они не только однородный массив), либо если вы имеете дело с многобайтовыми объектами, такими как 32-битные целые числа, тогда вам нужно будет использовать что-то вроде struct module.