Discussion:
Hнда..
(слишком старое сообщение для ответа)
Ivan Kuvshinov
2006-01-06 14:27:48 UTC
Permalink
DB> Hу как... В общих чертах: сначала обозначается, что мы кодируем
DB> (число, строку...), потом - длину (смотреть в более подробном
DB> англоязычном описании, там достаточно понятно), потом - само число в
DB> фиксированном порядке байт.
А смысл писать длинну числа? В первых, это такое же конкретное ограничение на
длинну и ничем не лучше, чем просто отдать вместо одного байта несколько. Hет,
конечно смысл есть, но речь шла именно о форме записи самих чисел - оно само
может нести информацию о том где оно кончается, ну наподобие строк
оканчивающихся нулём или префиксного кодирования (для префиксного, опять же
дополнительное число требуется как маркер конца и оно лишь разделять числа друг
от друга, но не показать длинну одного). Грубо говоря, для нужной формы записи
длинна числа будет изменяться в зависимости от потребностей и оно будет лишь
чуть больше по размеру чем обычное число, выражающее то же значение.

КИА
Bulat Ziganshin
2006-01-07 06:38:53 UTC
Permalink
* Originally in RU.COMPRESS
Приятного тебе дня и незабываемой ночи, Dmitry!

Friday January 06 2006, Dmitry Belyavsky writes to "Ivan Kuvshinov":
DB>>> ASN1-нотация?
IK>> Конкретизируй, я в написанной ниже мути понял только, что это
IK>> что-то сложно и большое.

DB> Hу как... В общих чертах: сначала обозначается, что мы кодируем
DB> (число, строку...), потом - длину (смотреть в более подробном
DB> англоязычном описании, там достаточно понятно), потом - само число в
DB> фиксированном порядке байт.

а где его взять? дело в том, что я пишу библиотеку сериализации и хотелось бы
придерживаться при этом общепринятых стандартов, в частности чтобы работать со
всевозможными сетевыми протоколами. network byte order я уже использую, а что
ещё стандартизировано? например, порядок битов в байте какой должен быть?

Bulat, mailto:bulat_z-AT-mail.ru

... Иногда для того, чтобы изменить свое восприятие мира,
... люди пытаются изменить сам мир
Dmitry Belyavsky
2006-01-08 11:51:40 UTC
Permalink
Приветствую!

Bulat Ziganshin <***@p126.f4.n5093.z2.fidonet.org> wrote:

DB>> Hу как... В общих чертах: сначала обозначается, что мы кодируем
DB>> (число, строку...), потом - длину (смотреть в более подробном
DB>> англоязычном описании, там достаточно понятно), потом - само число в
DB>> фиксированном порядке байт.
BZ>
BZ> а где его взять? дело в том, что я пишу библиотеку сериализации и хотелось бы
BZ> придерживаться при этом общепринятых стандартов, в частности чтобы работать со
BZ> всевозможными сетевыми протоколами. network byte order я уже использую, а что
BZ> ещё стандартизировано? например, порядок битов в байте какой должен быть?

http://www.oss.com/asn1/organizations.html
Ключевые слова для гугления - DER, ASN1.

Есть ряд библиотек. На C/C++ заниматься - жуть на лапках, код, который
этим занимается есть во всех, скажем, криптографических библиотеках.

На более высокоуровневых языках получше. Для Perl, Tcl и java заведомо
есть модули/пакеты.
--
SY, Dmitry Belyavsky (ICQ UIN 11116575)
Lev Walkin
2006-01-08 22:50:23 UTC
Permalink
Post by Dmitry Belyavsky
Приветствую!
DB>> Hу как... В общих чертах: сначала обозначается, что мы кодируем
DB>> (число, строку...), потом - длину (смотреть в более подробном
DB>> англоязычном описании, там достаточно понятно), потом - само число в
DB>> фиксированном порядке байт.
BZ>
BZ> а где его взять? дело в том, что я пишу библиотеку сериализации и хотелось бы
BZ> придерживаться при этом общепринятых стандартов, в частности чтобы работать со
BZ> всевозможными сетевыми протоколами. network byte order я уже использую, а что
BZ> ещё стандартизировано? например, порядок битов в байте какой должен быть?
http://www.oss.com/asn1/organizations.html
Ключевые слова для гугления - DER, ASN1.
Есть ряд библиотек. На C/C++ заниматься - жуть на лапках, код, который
этим занимается есть во всех, скажем, криптографических библиотеках.
на "криптографической библиотеке" какую-то свою сериализацию не особо-то
и напишешь. в любом случае имеет смысл использовать компиляторы, которые
по известному ASN.1 определению сгенерируют пару
сериализатор/десериализатор, заодно с struct/class контейнерами.

http://asn1.elibel.tm.fr/en/links/

http://lionet.info/asn1c
Post by Dmitry Belyavsky
На более высокоуровневых языках получше. Для Perl, Tcl и java заведомо
есть модули/пакеты.
...а на PHP сериализация вообще встроена в сам язык.
--
Lev Walkin
***@lionet.info
Lev Walkin
2006-01-08 22:20:44 UTC
Permalink
Post by Bulat Ziganshin
* Originally in RU.COMPRESS
Приятного тебе дня и незабываемой ночи, Dmitry!
DB>>> ASN1-нотация?
IK>> Конкретизируй, я в написанной ниже мути понял только, что это
IK>> что-то сложно и большое.
DB> Hу как... В общих чертах: сначала обозначается, что мы кодируем
DB> (число, строку...), потом - длину (смотреть в более подробном
DB> англоязычном описании, там достаточно понятно), потом - само число в
DB> фиксированном порядке байт.
а где его взять? дело в том, что я пишу библиотеку сериализации и хотелось бы
придерживаться при этом общепринятых стандартов, в частности чтобы работать со
всевозможными сетевыми протоколами. network byte order я уже использую, а что
ещё стандартизировано?
Возьми сразу ASN.1 компилятор. Например, здесь:

http://lionet.info/asn1c

Он тебе по ASN.1 описанию сразу сериализатор сделает на C.
Post by Bulat Ziganshin
например, порядок битов в байте какой должен быть?
порядок бит в байте определяется link-level протоколом, и не зависит
от программиста приложения (в байт-ориентированных протоколах).
--
Lev Walkin
***@lionet.info
Lev Walkin
2006-01-08 22:18:12 UTC
Permalink
Post by Ivan Kuvshinov
DB> Hу как... В общих чертах: сначала обозначается, что мы кодируем
DB> (число, строку...), потом - длину (смотреть в более подробном
DB> англоязычном описании, там достаточно понятно), потом - само число в
DB> фиксированном порядке байт.
А смысл писать длинну числа?
Uniformity
Post by Ivan Kuvshinov
В первых, это такое же конкретное ограничение на
длинну и ничем не лучше, чем просто отдать вместо одного байта несколько.
В ASN.1 (BER) длина числа записывается переменным числом байт. Затем
само число.
Post by Ivan Kuvshinov
Hет,
конечно смысл есть, но речь шла именно о форме записи самих чисел - оно само
может нести информацию о том где оно кончается, ну наподобие строк
оканчивающихся нулём или префиксного кодирования (для префиксного, опять же
дополнительное число требуется как маркер конца и оно лишь разделять числа друг
от друга, но не показать длинну одного). Грубо говоря, для нужной формы записи
длинна числа будет изменяться в зависимости от потребностей и оно будет лишь
чуть больше по размеру чем обычное число, выражающее то же значение.
В OBJECT IDENTIFIER и RELATIVE-OID число записывается как набор
восьмибитных байт, из которых только семь бит значимы, а восьмой
(старший) содержит признак конца.
--
Lev Walkin
***@lionet.info
Loading...