Найти - Пользователи
Полная версия: сегментация вывода
Начало » Python для экспертов » сегментация вывода
1 2
zeb
предисловие

>>> print len(struct.pack(“B”,1))
1
>>> print len(struct.pack(“I”,1))
4
>>> print len(struct.pack(“BI”,1,1))
8

видим что в последнем случае питон уместил байт в 4 байта - хотя я этого не просил.

история:
необходимо собрать в один файл кучку картинок ужимая их через lzo, в последствии этот конечный файл будет распаковываться другой прогой, собственно для нее и ужимается.
и тут выясняется что питон снова выдает вывод с lzo.compress() сегментированным по 4 байта.
что читающая прога не понимает. ибо по сути мы имеем 3 мусорных байта.

вопрос:
как заставить питон сегментировать по одному байт? что является аналогом плюсплюсного
#pragma pack(1)
?
zheromo
>>> print len(struct.pack(“=BI”,1,1))
5


http://docs.python.org/library/struct.html#struct-format-strings
раздел 7.3.2.1. Byte Order, Size, and Alignment
zeb
это я уже нашел. но как же быть с выводом библиотеки?
zheromo
а какая именно библиотека имеется в виду?
zeb
Библиотека lzo http://www.oberhumer.com/opensource/lzo/
ее метод compress возвращает собстенно нужные мне данные. только вот с лишними мусорными байтами
Андрей Светлов
Так вы определитесь: или lzo неправильно работает - и тогда вопросы к ней. Или вы не тот формат struct подсовываете.
zheromo уже написал, что = отключает padding. Это тот самый ваш #pragma pack(1)
zeb
lzo это всего лишь обертка. она выдает результат сжатый библиотекой стоящей в системе. но вот выдает его с мусорными байтами. т.е сжимает она верно но упаковывает не так как надо. что можно придумать что бы это обойти?
Андрей Светлов
библиотека-то open source - вот вам и карты в руки
zeb
извиняюсь. покопал по глубже. проблема в чем то ином.
пакует не всегда кратно 4м. но при этом пакует с какими то лишними байтами относительно аналогичного упаковщинка на си. т.е код взят с того же сайта. по идее должно быть аналогично. возможно что проблема где то в записи в файл или в подобном месте.
всем спасибо
Андрей Светлов
Глупый вопрос: а вы файл в бинарном режиме открываете?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB