Что хороший путь состоит в том, чтобы показать числу с плавающей точкой через SNMP?

Я кодирую Агент SNMP. Я должен отправить значения, которые имеют десятичную точку менеджеру по SNMP.

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

  1. Усеките число.
  2. Умножьтесь константой.
  3. Спросите Stackoverflow.

Если я усекаю число, я теряю большую информацию, в которой я нуждаюсь.

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

Так, я делаю опцию 3. Что я делаю?

7
задан mskfisher 10 May 2012 в 13:08
поделиться

3 ответа

Обычный, стандартный способ сделать это - определить ТЕКСТУАЛЬНОЕ СОГЛАШЕНИЕ с типом интеграла (например, Integer32 или Unsigned32) и DISPLAY-HINT с форматом "d-N", где N - это количество мест, которое должно быть смещено десятичной дробью для отображения.

Таким образом, для значения с одним десятичным разрядом от (скажем, 0.0 до 10.0) следует использовать ТЕКСТУАЛЬНОЕ СОГЛАШЕНИЕ типа Беззнакового32(0...100) и ДИСПЛЕЙ-ХИНТ с "d-1". На проводе значение варьируется от 0 до 100, но менеджер (через загружаемый модуль MIB) будет сдвигать десятичный разряд на одно место для отображения диапазона от 0.0 до 10.0.

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

12
ответ дан 6 December 2019 в 14:04
поделиться

В качестве октектного потока в формате IEEE-754 (8 октетов). См.: http://en.wikipedia.org/wiki/ieee_754-2008

2
ответ дан 6 December 2019 в 14:04
поделиться

Нет, в данном случае нет двусмысленности, но учтите следующее:

struct SCustomData {
//...
    void SetCode(int nCode)
    {
            //OOPS!!! Here we do nothing!
            //nCode = nCode;

            //This works but still error prone
            this->nCode = nCode;
    }
};

Следует обратить внимание на один из существующих стилей кодирования. Например, Общее правило именования в стилях кодирования Google C++ или прочитайте превосходную книгу « Стандарты кодирования C++: 101 правила, руководящие принципы и передовой опыт » Херба Саттера и Андрея Александреску.

-121--4690841-

Чтобы код был действительным, нельзя поместить тэг в < ul > , кроме < li > .

Однако можно поместить любой элемент уровня блока в < li > , например:

<ul>
        <li>
            <h2>...</h2>
            <p>...</p>
            <p>...</p>
        </li>
</ul>
-121--1192812-

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

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

1
ответ дан 6 December 2019 в 14:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: