Преобразуйте строку с прямым порядком байтов в целое число

Можно использовать тестовую команду:

test -d $(OBJDIR) || mkdir $(OBJDIR)
12
задан Kevin Burke 8 May 2015 в 13:33
поделиться

2 ответа

Модуль struct преобразует упакованные данные в значения Python и наоборот.

>>> import struct
>>> struct.unpack("<h", "\x00\x05")
(1280,)
>>> struct.unpack("<h", "\x00\x06")
(1536,)
>>> struct.unpack("<h", "\x01\x06")
(1537,)

«h» означает короткое int или 16-битное int. «<» означает использование прямого порядка байтов.

20
ответ дан 2 December 2019 в 04:43
поделиться

struct подходит, если вам нужно преобразовать одну или небольшое количество 2-байтовых строк в целые числа, но array и numpy сам по себе лучше варианты. В частности, numpy.fromstring (вызываемый с соответствующим аргументом dtype ) может напрямую преобразовывать байты из вашей строки в массив (независимо от того, что это dtype ). (Если numpy.little_endian ложно, вам придется поменять байты местами - см. здесь для более подробного обсуждения, но в основном вы захотите вызвать byteswap для объекта массива, который вы только что создали с помощью fromstring ).

12
ответ дан 2 December 2019 в 04:43
поделиться
Другие вопросы по тегам:

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