2015-01-13 3 views
0

У меня есть четыре байта из сырого сокета: value = 0xc0ff00c0. Используя-структуру с форматом L (или I по этому вопросу), чтобы распаковатьPython struct выглядит неточно

struct.unpack("=L",value)  

я 3221290944. Использование

int(hexlify(value),16) 

я 3237937344. Последнее правильно. Я не заметил этого с другими спецификаторами формата, поэтому я предполагаю, что он должен иметь какое-то отношение к более крупным интегральным структурам, таким как Long. Кто-нибудь еще заметил это? Благодаря

+0

ли значение упакованы с питоном? – dmg

+0

Также используется 'struct.unpack ("! L ", value)' или 'struct.unpack ("> L ", value)'. Допускает правильный результат. '!' означает сетевой формат. Поэтому я предполагаю, что это то, что вам нужно. – dmg

ответ

2

Вы должны распаковать с:

struct.unpack("!L",value) 

Поскольку данные передаются по сети, вы должны распаковать с помощью сети упорядоченность - !

Source