我正在使用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
答案 0 :(得分:1)
好的,我解决了这个问题。
我决定不使用getTag() - 而是尝试了这个算法:
获取对象的类型(getType())并检查它是否是StringType的实例
如果是,我会从中获取参考符号:
MibTypeSymbol mts =(StringType)myObj.getReferenceSymbol()
然后我将此MibTypeSymbol转换为String并与“DisplayString”进行比较
mts.toString.equals( “DisplayString”);
并且 - 至于现在 - 它正在发挥作用。
Mayby这对未来某人的帮助。
但是有人可能有更好的想法吗?