Как преобразовать строку длиной 2 байта в целое число в Python - PullRequest
5 голосов
/ 05 мая 2009

У меня есть программа на Python, которую я унаследовал и пытаюсь расширить.

Я извлек двухбайтовую строку в строку с именем pS.

pS 1-й байт 0x01, второй 0x20, десятичное значение == 288

Я пытался получить его значение в виде целого числа, я использовал строки вида

x = int(pS[0:2], 16)  # this was fat fingered a while back and read [0:3]

и получите сообщение

ValueError: invalid literal for int() with base 16: '\x01 '

Мы с другим программистом на С гуглили и пытались заставить его работать весь день.

Предложения, пожалуйста.

Ответы [ 2 ]

20 голосов
/ 05 мая 2009

Посмотрите на модуль struct .

struct.unpack( "h", pS[0:2] )

Для 2-байтового значения со знаком. Используйте «H» для без знака.

4 голосов
/ 05 мая 2009

Вы можете преобразовать символы в их код с помощью ord, а затем сложить их соответствующим образом:

x = 256*ord(pS[0]) + ord(pS[1])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...