LINUX.ORG.RU

python struct.unpack()


0

2
import struct;

s = "\x04\x9E\x00\x00\x00\x36\x00\x00\x00";
print struct.unpack('cLL', s);

Ошибка:

struct.error: unpack requires a string argument of length 24

Зачем ему нужно 24 символа? Если c - 1 байт, L - 4 байта. Итого 9 байт. Ровно столько и содержит символов строка s.

В тоже время на православном Perl всё работает.

use Data::Dumper;

$str = "\x04\x9E\x00\x00\x00\x36\x00\x00\x00";
print Dumper(unpack('cLL', $str));

Что я сделал неправильно?

Ответ на: комментарий от zJes

RTFM

Спасибо, оно. Оказывается про это и в доке есть, но сходу не понять.

Еще бы оно char, который c распаковывало бы в питоновский int, как это делается в православном. А так видимо нужно на него ord еще натравить.

Olegymous ★★★
() автор топика
Ответ на: RTFM от Olegymous

Еще бы оно char, который c распаковывало бы в питоновский int, как это делается в православном.

До http://docs.python.org/library/struct.html#format-characters не осилили дочитать? Или вам религия не позволяет «неправославную» документацию читать больше чем по одной строчке за раз?

shylent
()
Ответ на: комментарий от shylent

Не осилил, признаю свою ошибку.

b signed char

Olegymous ★★★
() автор топика
Ответ на: комментарий от val-amart

Вы правы, у python документация убогая. Я про ту, что выдаёт pydoc. А та, на которую дали ссылку слишком многословная.

Olegymous ★★★
() автор топика
Ответ на: комментарий от Olegymous

в переводе это означает - одну не осилил понять, вторую не осилил прочитать.

val-amart ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.