Какой хороший способ показать число с плавающей запятой через SNMP? - PullRequest
7 голосов
/ 26 января 2010

Я кодирую агент SNMP. Мне нужно отправить значения с десятичной точкой в ​​SNMP Manager.

У меня есть пара вариантов:

  1. Сокращение числа.
  2. Умножить на постоянную.
  3. Ask Stackoverflow.

Если я усекаю число, я теряю много информации, которая мне нужна.

Если я умножу на константу, то менеджер покажет странные единицы, которые конечный пользователь предпочел бы не видеть. (грамм вместо килограмма).

Итак, я делаю вариант 3. Что мне делать?

Ответы [ 3 ]

12 голосов
/ 27 января 2010

Обычный стандартный способ сделать это - определить TEXTUAL-CONVENTION с целочисленным типом (таким как Integer32 или Unsigned32) и DISPLAY-HINT с форматом "dN", где N - это число мест, которые десятичная дробь должна быть сдвинут для отображения.

Таким образом, для значения с одним десятичным знаком в диапазоне (скажем) от 0,0 до 10,0 вы бы использовали TEXTUAL-CONVENTION типа Unsigned32 (0..100) и DISPLAY-HINT «d-1». В сети значение варьируется от 0 до 100, но менеджер (посредством загружаемого модуля MIB) сместит десятичную единицу, чтобы отобразить диапазон от 0,0 до 10,0.

Другие способы сделать это не способствуют совместимости.

2 голосов
/ 26 января 2010

как поток октетов в формате IEEE-754 (8 октетов). Смотри: http://en.wikipedia.org/wiki/IEEE_754-2008

1 голос
/ 29 января 2010

Я скорее отправляю эти данные через OCTET STRING / DisplayString. Числа, такие как «1,5» могут быть отправлены легко.

Однако, если данные должны быть точными, вы можете использовать предложение Кайла, отправляя байты (октеты). Примечательно, что он также отправляется через OCTET STRING, поскольку это идеальный контейнер байтов.

...