Я пытаюсь понять функцию распаковки в Python и как она использует строку формата.Функция распаковки в python
Я использую строку формата «I», которая соответствует примеру unsigned int (size, 4 bytes).
В соответствии с документацией функция unpack примет строку и преобразует ее в список значений на основе строки формата.
http://docs.python.org/2/library/struct.html
Таким образом, я использовал значение входного сигнала в виде строки, «тест», и здесь есть выход:
>>> import struct
>>> input="test"
>>> l = struct.unpack("I", input)[0]
>>> print l
1953719668
Я пытаюсь понять, как выходное значение было получено от входа ,
>>> from struct import *
>>> calcsize('I')
4
Размер «I» - 4 байт. строка, «тест» имеет 4 символа, который равен 4 байтам. Я попытался преобразовать каждый символ в соответствующее значение Hex ASCII и сохранить его в маленьком концевом порядке, но он не соответствует выходу выше.
Любая помощь будет оценена по достоинству.
спасибо, я проверял код, который использовал «Я» в качестве формата строки для ввода строки. Не могли бы вы подробнее рассказать о том, как строка формата применяется к вводу? Я подумал, что в конце концов это будет выглядеть так: ord (t), ord (s), ord (e), ord (t). наиболее значимый байт до наименее значимого байта. Кроме того, что, если вход имеет размер больше 4 байтов (размер unsigned int), он не будет применять строку формата к оставшимся символам? –
@NeonFlash, ord ('t') + (ord ('e') << 8) + (ord ('s') << 16) + (ord ('t') << 24) == (ord ('t') << 24) + (ord ('s') << 16) + (ord ('e') << 8) + ord ('t') – falsetru
@NeonFlash, размер вычисления calcseize (), а длина строки должна быть одинаковой. Или это вызовет 'struct.error'. – falsetru