приведение байтового массива к подписанному short в python - PullRequest
0 голосов
/ 25 февраля 2019

Я хочу преобразовать тип bytearray или список двоичных строк в python в подписанный короткий список.Фактически, я получаю поток байтов из Ethernet и хочу преобразовать их в подписанный short ;однако единственный способ, который я нашел в Python, - это использование struct.unpack, которое кажется медленным, поскольку для определения типа каждого байта требуется строка формата.

Это требование к формату замедляется в два этапа:

1) Требуется создать длинную строку для длинного массива байтов

2) Требуется для поиска один за другим в массиве.

В C ++ следующий простой кодвыполняет работу со всем блоком памяти, содержащимся в InBuf:

OutBuf = short int[len]
InBuf = char[len*2]
memcpy(&OutBuf, &InBuf, len*2)

При этом пропускается поиск формата в байтовом массиве, а также построение строки формата.Кто-нибудь знает лучший способ сделать это в Python ?

1 Ответ

0 голосов
/ 25 февраля 2019

Если вы используете Python> 3.2, вы можете использовать int.from_bytes:

int.from_bytes(b, byteorder='little', signed=True)
...