2015-01-26 6 views
1

Как указано в стандарте (http://rsdn.ru/article/ASN/ASN.xml) при кодировании OBJECT IDENTIFIER, необходимо установить SID1 либо 0,1, либо 2, а SID2 должен иметь соответствующие значения, чтобы иметь только подход к декодированию SID1 и SID2.Почему при вычислении значения SID2 SID1 следует умножить на 40 при использовании стандарта ASN.1?

Итак, почему формула для оценки кодированного SID2 является SID1 * 40 + SID2? Что для 40?

+0

Зачем вы связываете нас с русскоязычной версией стандарта? Не так много людей здесь будут использовать для этого ... – Jolta

+0

@ Джолта, ты прав, извините, это моя вина. Я буду более дальновидным. – Juriy

ответ

1

Это произошло из ограничений пространства имен OID (IIRC, X.208). Есть только три корня верхнего уровня (itu-t, iso и joint-itu-t), а второй уровень ограничен 40 дугами (0-39), когда корневое пространство имен является либо itu-t, либо iso. Таким образом, можно однозначно кодировать первые две дуги с одним байтом.

2

Это наследие с первых дней ASN.1. Дуги 0 и 1 в дереве OID ограничены 40 детьми каждый (0-39), в то время как Arc 2 не имеет ограничения на количество детей. Чтобы сохранить биты на проводе, первые два OID-узла представлены в одном байте (даже для Arc 2, если его дочерний элемент меньше 47). Выбор «40» был просто произвольным числом, выбранным для удобства, чтобы позволить легкие вычисления для установки первых двух OID-дуг в один байт.

 Смежные вопросы

  • Нет связанных вопросов^_^