Что такое шестнадцатеричное строковое представление типа данных BITS?


Как преобразовать бит тип данных в шестнадцатеричную строку тип данных? (например, 0x80) Что такое HEX STRING представление (0), (1), (2) BITS соответственно? В DEFVAL составляет '00'h.

Composed Type: Bits
Base Type: BITS

Value List: 
large (0)
mid-size (1)
compact (2)
1 2

1 ответ:

Вы, вероятно, нашли правильный синтаксис для шестнадцатеричных и битовых данных на man-странице " snmpset": http://www.net-snmp.org/docs/man/snmpset.html

Таким образом, установка значения битов Big (0) выполняется аналогично синтаксису

snmpset <flags,host etc> <oid> b 0

И для установки нескольких флагов, таких как средний размер и компактный, используйте

snmpset <flags,host etc> <oid> b 1,2
Я думаю, что последний синтаксис не очень хорошо документирован. Я нашел его в архивах списка рассылки для net-snmp.

Как я уже писал в комментариях, нет никакого " HEX Строка " тип данных в SNMP. Если вы хотите передать двоичные данные, такие как строковое значение октета, то вам нужно будет каким-то образом представить их в командной строке. Net-snmp предоставляет входной формат под названием "HEX STRING", который будет принимать шестнадцатеричный ввод, используя следующий синтаксис:

snmpset <flags,host etc> <oid> x 60
Кстати, "60 "в шестнадцатеричном формате совпадает с тем, как SNMP кодирует" биты 1,2 " (второй и третий биты, MSB первый).

Описание того, как SNMP кодирует и декодирует значения битов, находится в RFC1906 раздел 8. Имея эти знания, вам просто нужно узнать, как работает шестнадцатеричное преобразование, которое легко поддается Гуглу.

Edit: я думаю, это то, что вы ищете:

0 -> 0x80
1 -> 0x40
2 -> 0x20

Это немного назад по сравнению с обычным байтовым кодированием (LSB), но снова прочитайте RFC1906 для описания того, как это работает.

Следует отметить, что при попытке установить значение строки октета для переменной BITS можно ожидать, что агент SNMP вернет ошибку типа. Однако, поскольку BITS-это просто макрос SMI, основанный на ОКТЕТНОМ строковом типе, они фактически кодируются таким же образом. Таким образом, агент должен с радостью установить значение.