0

我正在使用 java Mibble 库来处理 MIB 文件并为我的 snmp 代理创建 MIB 实现。并且有一个小问题:

有一个 DisplayString 类型,它是 OCTET_STRING 的表示形式,但只能包含 7 位 ASCII 字符。还有像 AdminString 这样的类型,它是 OCTET_STRING 的另一种表示形式,但可以包含所有 ASCII 字符。

所以我的问题是:如何区分 DisplayString(这样我可以在我的实现中检查大于 126 的字符)和 Admin String?我尝试使用 MibTypeTag[1] 但显然我不知道如何使用它(任何提示?)它说“可以使用相同或相似的原始 ASN.1 类型表示来区分类型(例如作为 DisplayString 和 IpAddress)"

我的书面英语并不完美,所以这就是我想做的:

if (MibTypeTag == DisplayString) {
   check for chars greater than 126
}
else if (MibTypeTag == AdminString) {
   awesome! nothing to do!
}

提前致谢!

[1] http://www.mibble.org/doc/release/api/net/percederberg/mibble/MibType.html

4

1 回答 1

1

好的,我解决了这个问题。

我决定根本不使用 getTag() - 相反我尝试了这个算法:

  1. 获取对象的类型 (getType()) 并检查它是否是 StringType 的实例

  2. 如果是,我会从中得到参考符号:

    MibTypeSymbol mts = (StringType)myObj.getReferenceSymbol()

  3. 然后我将此 MibTypeSymbol 转换为 String 并与“DisplayString”进行比较

    mts.toString.equals("DisplayString");

而且 - 就目前而言 - 它正在工作。

也许这对将来的某人有帮助。

但也许有人有更好的主意?

于 2010-01-28T12:46:22.087 回答