Извлечь неподписанный короткий int из bytearray в Python - PullRequest
0 голосов
/ 10 июля 2019

У меня есть 4 байта bytearray в Python, и я хотел бы извлечь два беззнаковых коротких int.байты [0] и байты [1] для первого числа, и байты [2] и байты [3] для второго.

Это то, что у меня есть на данный момент:

bytes_payload = bytearray(string_payload)
print bytes_payload[0]
print bytes_payload[1]
print bytes_payload[2]
print bytes_payload[3]

Как я могу это сделать?

Спасибо

1 Ответ

1 голос
/ 10 июля 2019

Вы можете использовать функцию struct.unpack() для извлечения любых типов переменных из байтового массива. В вашем случае вы должны использовать

unpacked = struct.unpack("HH", bytes_payload)
print(unpacked[0])
print(unpacked[1])

Первый аргумент указывает, как интерпретировать байты, и вы можете комбинировать спецификаторы так, как хотите (если они соответствуют размеру байтового массива). Обратите внимание, что для правильной распаковки данных вам может понадобиться указать endianity.

...