Преобразуйте байт Python в “неподписанное целое число на 8 битов”

Я читаю в массиве байтов / список от сокета. Я хочу, чтобы Python рассматривал первый байт как "неподписанное целое число на 8 битов". Как возможно получить свое целочисленное значение как неподписанное целое число на 8 битов?

18
задан Garrett 15 April 2014 в 01:20
поделиться

3 ответа

Используйте модуль struct .

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

Обратите внимание, что unpack всегда возвращает кортеж, даже если вы распаковываете только один элемент.

Также посмотрите на этот вопрос SO .

21
ответ дан 30 November 2019 в 07:33
поделиться

байтов / байтовый массив - это последовательность целых чисел. Если вы просто обращаетесь к элементу по его индексу, у вас будет целое число:

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

По самому своему определению байты и байтовые массивы содержат целые числа в диапазоне (0, 256) . Итак, это «8-битные целые числа без знака».

7
ответ дан 30 November 2019 в 07:33
поделиться

Другой очень разумный и простой вариант, если вам просто нужно целочисленное значение первого байта, будет примерно следующим:

value = ord(data[0])

Если вы хотите распаковать все элементы полученных вами данных сразу (и это не просто однородный массив), или если вы имеете дело с многобайтовыми объектами, такими как 32-битные целые числа, вам нужно будет использовать что-то вроде модуля структуры.

7
ответ дан 30 November 2019 в 07:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: