通过SNMP显示浮点数的好方法是什么?

时间:2010-01-26 20:09:31

标签: floating-point snmp

我正在编写SNMP代理。我需要将具有小数点的值发送到SNMP管理器。

我有几个选择:

  1. 截断号码。
  2. 乘以常数。
  3. 询问Stackoverflow。
  4. 如果我截断数字,我会丢失很多我需要的信息。

    如果我乘以常数,那么管理器将显示最终用户不愿看到的奇怪单位。 (克而不是千克)。

    所以,我正在做选项3.我该怎么办?

3 个答案:

答案 0 :(得分:12)

通常的标准方法是定义一个带有整数类型的TEXTUAL-CONVENTION(例如Integer32或Unsigned32)和一个带有“dN”格式的DISPLAY-HINT,其中N是十进制应该的位数被转移用于显示目的。

因此,对于具有从(例如)0.0到10.0的单个小数位的值,您将使用类型为Unsigned32(0..100)的TEXTUAL-CONVENTION和“d-1”的DISPLAY-HINT。在线上,值的范围是0到100,但是管理器(通过加载的MIB模块)将小数位移一位以显示0.0到10.0的范围。

其他方式不利于互操作性。

答案 1 :(得分:2)

作为IEEE-754格式的八位字节流(8个八位字节)。请参阅:http://en.wikipedia.org/wiki/IEEE_754-2008

答案 2 :(得分:1)

我宁愿通过OCTET STRING / DisplayString发送数据。可以轻松发送诸如“1.5”的数字。

但是,如果数据需要准确,您可以通过发送字节(八位字节)来使用Kyle的建议。值得注意的是,它也是通过OCTET STRING发送的,因为它是一个完美的字节容器。