Селекторы OSI, каковы их значения? С++
Я работаю со стандартом IEC61850. И впервые я столкнулся с OSI Selectors: Transport selector, Session selector и Presentation selector. Меня не интересует их физический смысл. Задача состоит в том, чтобы преобразовать их значения из файла разбора (из std::string) в uint8_t. Я не понимаю, как представлены эти значения?
Значения из файла (схема xml):
<P type="OSI-PSEL">00000001</P>
<P type="OSI-SSEL">0001</P>
<P type="OSI-TSEL">0001</P>
или это может быть
<P type="OSI-TSEL">00000001</P>
<P type="OSI-PSEL">01</P>
<P type="OSI-SSEL">01</P>
в xsd я получил эту информацию о них:
<xs:complexType name="tP_OSI-TSEL">
<xs:restriction base="tP">
<xs:maxLength value="8"/>
<xs:pattern value="[0-9,A-F]+"/>
</xs:restriction>
</xs:complexType>
<xs:complexType name="tP_OSI-SSEL">
<xs:restriction base="tP">
<xs:maxLength value="16"/>
<xs:pattern value="[0-9,A-F]+"/>
</xs:restriction>
</xs:complexType>
<xs:complexType name="tP_OSI-PSEL">
<xs:restriction base="tP">
<xs:maxLength value="16"/>
<xs:pattern value="[0-9,A-F]+"/>
</xs:restriction>
</xs:complexType>
Представлены ли 01 или 00001 или 00000001 и т. д. в двоичной системе счисления? Почему они имеют разную длину? Я имею в виду, если 00000001 - это октет, что тогда 00001 и 01?