On 2009.03.16 at 20:21:02 +0200, Покотиленко Костик wrote:
> В Пнд, 16/03/2009 в 21:10 +0300, Иван Лох пишет: > > On Mon, Mar 16, 2009 at 07:28:22PM +0200, Покотиленко Костик wrote: > > > > > > > > Еще один важный момент _расширяемость_ Одно дело изменить API, другое -- > > > > добавить пару строчек в правильно написанный парсер. Да и потом, > > > > создается > > > > впечатление, что Вы строго в рамках i386 работаете. За ее пределами в > > > > бинарных форматах геморроя куча. > > > > > > Например? > > > > endian > > Есть такая штука, называется "network byte order". Ещё примеры, а то > куча маленькая? Есть такая штука как misaligned memory access. На некоторых архитектурах это просадка производительности примерно на порядок, а некоторые такой гадости не любят, и сразу SIGBUS шлют. Поэтому мы в наших криптографических бинарных форматах от использования функций htons/htonl отказались. Проще из байтиков 32-битное или 64-битное целое собрать. Логическими операциями (что в общем-то от strtol уже весьма слабо отличается по числу задействованых операций). А еще есть такой замечательный формат как ASN.1 с его разнообразными способами бинарного представления - BER/CER/DER etc. Так там очень интересный способ хранения длин структур используется. Позволяющий по-моему до 128 байт на поле длины (по 7 значимых бит в байте) использовать. Очень весело все это дело парсить/сериализовать. Или тамошние OID-ы. Тоже штука веселая. И всего-то универсальный формат для представления древовидных структур. Даже без гиперссылок. Вот когда для реальной задачи начинают использовать бинарные форматы, то почему-то хрень получается по уровню сложности подобная тому ASN.1. Или возьмем, скажем, бинарные форматы Microsoft Office. Уж в самом микрософте-то единственный человек, который понимал что там к чему, по-моему, уже три года как на пенсию ушел. Впрочем, у них и "текстовый" rtf не лучше. с его 7 байтами на русскую букву. -- To UNSUBSCRIBE, email to [email protected] with a subject of "unsubscribe". Trouble? Contact [email protected]

