SNMP エージェントをコーディングしています。小数点を含む値を SNMP マネージャーに送信する必要があります。
いくつかのオプションがあります:
- 番号を切り捨てます。
- 定数を掛けます。
- スタックオーバーフローに聞いてください。
数字を切り捨てると、必要な多くの情報が失われます。
定数を掛けると、マネージャーはエンドユーザーが見たくない奇妙な単位を表示します。(キログラムではなくグラム)。
では、オプション 3 を実行します。どうすればよいですか?
SNMP エージェントをコーディングしています。小数点を含む値を SNMP マネージャーに送信する必要があります。
いくつかのオプションがあります:
数字を切り捨てると、必要な多くの情報が失われます。
定数を掛けると、マネージャーはエンドユーザーが見たくない奇妙な単位を表示します。(キログラムではなくグラム)。
では、オプション 3 を実行します。どうすればよいですか?
これを行う通常の標準的な方法は、整数型 (Integer32 や Unsigned32 など) で TEXTUAL-CONVENTION を定義し、「dN」形式で DISPLAY-HINT を定義することです。ここで、N は小数点以下をシフトする桁数です。表示目的。
したがって、(たとえば) 0.0 から 10.0 の範囲の小数点以下 1 桁の値の場合、タイプ Unsigned32(0..100) の TEXTUAL-CONVENTION と "d-1" の DISPLAY-HINT を使用します。ネットワーク上では、値の範囲は 0 ~ 100 ですが、マネージャは (MIB モジュールをロードすることによって) 小数点以下を 1 桁シフトして、0.0 ~ 10.0 の範囲を表示します。
それを行う他の方法は、相互運用性を助長しません。
IEEE-754 形式 (8 オクテット) のオクテクト ストリームとして。参照: http://en.wikipedia.org/wiki/IEEE_754-2008
私はむしろそのデータを OCTET STRING/DisplayString 経由で送信します。「1.5」などの数字が手軽に送れます。
ただし、データが正確である必要がある場合は、バイト (オクテット) を送信して Kyle の提案を使用できます。これは完全なバイト コンテナーであるため、OCTET STRING 経由でも送信されます。