Обработка данных из Python сокета recv - PullRequest
0 голосов
/ 28 марта 2011

Я использую Python 2.7 для получения данных:

data = self.socket.recv(4096)

Как мне получить первый неподписанный шорт из данных? Данные выглядят так:

>>> print repr(data) 
'\x00\x053B2D4C24\x00\x00\x01\x00...'

Ответы [ 3 ]

1 голос
/ 28 марта 2011

Если под беззнаковым коротким вы подразумеваете два байта, просто выполните:

data[:2]

Если вы знаете и ожидаете, что определенный объем данных будет анализироваться, вы можете использовать struct библиотека.

0 голосов
/ 10 декабря 2011

Старый вопрос, но я подумал, что выложу лучшее решение:

value, = struct.unpack('H', data[:2])

Обратите внимание на использование , для правильной распаковки возвращаемого 1-го кортежа.

0 голосов
/ 28 марта 2011

Вот что я придумал:

s = struct.Struct('H')
num = int('0x' + ''.join(x for x in repr(packet[:s.size]) if x.isdigit()), 0)
...