Что такое представление HEX STRING типа данных BITS?

Как преобразовать тип данных BITS в тип данных HEX STRING? (например, 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)

person Community    schedule 20.08.2014    source источник
comment
Какая среда/язык используется здесь?   -  person k1eran    schedule 20.08.2014
comment
Встроенный Linux и протокол SNMP.   -  person    schedule 20.08.2014
comment
Думаю, это не совсем вопрос SNMP. Просто посчитайте. Следует отметить, что в спецификации протокола SNMP отсутствует тип данных HEX STRING. Возможно, речь идет о форматах вывода/ввода команд net-snmp, как предполагает комментарий Лекса Ли.   -  person Jolta    schedule 27.08.2014
comment
@Jolta Тогда какой правильный тип данных input format для BITS?   -  person    schedule 27.08.2014
comment
Вы говорите о наборе команд net-snmp? SNMP является сетевым протоколом и не имеет входного формата.   -  person Jolta    schedule 27.08.2014
comment
Извините, мне непонятно. Если вы не чувствуете необходимости прояснять это достаточно, чтобы люди могли ответить, то, я думаю, вы не так уж сильно хотите получить ответ, не так ли? Если вопрос действительно касается инструментов командной строки net-snmp, то у меня есть ответ. Но я не хочу публиковать его, если вопрос касается какого-то другого инструмента, потому что это будет неправильный ответ.   -  person Jolta    schedule 28.08.2014
comment
>But I don't want to post it.. - этот ответ вообще не имеет смысла.   -  person    schedule 28.08.2014
comment
Если я опубликую неправильный ответ, вы понизите его и не примете. И вполне оправданно, потому что это был неправильный ответ. Вот почему я пытаюсь убедиться, что понимаю ваш вопрос. Почему вы не говорите мне, используете ли вы инструменты командной строки net-snmp или нет?   -  person Jolta    schedule 29.08.2014


Ответы (2)


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

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

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

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

snmpset <flags,host etc> <oid> b 1,2

Я думаю, что последний синтаксис плохо документирован. Я нашел его в архивах списка рассылки для net-snmp.

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

snmpset <flags,host etc> <oid> x 60

Между прочим, «60» в шестнадцатеричном формате идентично тому, как SNMP будет кодировать «биты 1,2» (второй и третий биты, сначала старший бит).

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

Изменить: я думаю, это то, что вы ищете:

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

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

Следует отметить, что если вы попытаетесь установить значение OCTET STRING для переменной BITS, вы можете ожидать, что агент SNMP вернет ошибку типа. Однако, поскольку BITS — это всего лишь макрос SMI, основанный на типе OCTET STRING, на самом деле они кодируются одинаково. Таким образом, агент должен с радостью установить значение.

person Jolta    schedule 04.09.2014
comment
какие будут значения HEX STRING для 3,4,5,6,7,8 бит соответственно? А также для всего диапазона, от 0-8 бит? - person ; 26.05.2018
comment
@minto, ты хочешь узнать, как выполнять математические операции в двоичном формате? Загляните на страницу Википедии. Если у вас все еще есть вопросы, пожалуйста, опубликуйте новый вопрос на SO вместо того, чтобы комментировать старые ответы на вопросы. en.wikipedia.org/wiki/Binary_number#Counting_in_binary - person Jolta; 28.05.2018
comment
Я сделал, но преобразование не так тривиально. Это не прямое преобразование, а расчет. - person ; 30.05.2018
comment
Затем, не стесняйтесь задавать вопросы об этом. Но поле для комментариев — не то место. знак равно - person Jolta; 31.05.2018
comment
О, сделано, здесь я согласен. - person ; 31.05.2018

С Net-SNMP вам не нужно вычислять значения битов, вы пишете это, чтобы установить один или несколько битов:

snmpset -v2c -c public 192.168.100.1   $ObjectId   = "medium compact"
person lathspell    schedule 24.05.2019