2010-01-28 65 views
0

我使用java Mibble庫來處理MIB文件併爲我的snmp代理創建MIB實現。並有一個小問題:檢查MIB對象是否爲DisplayString

有一個DisplayString類型表示OCTET_STRING,但可以包含只有7位ASCII字符。還有類似AdminString這種OCTET_STRING的另一種代表,但可以包含所有的ASCII字符。

所以我的問題是:如何區分顯示字符串(這樣我可以檢查在我的實現中大於126的字符)從管理員字符串?我試圖使用MibTypeTag [1],但顯然我不知道如何使用它(任何提示?),它說「有可能使用相同或相似的原始ASN.1類型表示(例如爲DisplayString和Ip地址)」

我寫的英文不是很好,所以這裏是我想要做什麼:提前

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

回答

1

好的,我解決了這個問題。

我決定不使用getTag()在所有 - 而不是我想這個算法:

  1. 獲取對象的類型(的getType()),並檢查它是否是StringType

  2. 的實例
  3. 如果我得到參考符號從它:

    MibTypeSymbol MTS =(StringType)myObj.getReferenceSymbol()

  4. 然後我將此MibTypeSymbol轉換爲字符串並與「DisplayString」比較

    mts.toString.equals(「DisplayString」);

而且 - 至今爲止 - 它正在工作。

Mayby對未來某人的幫助。

但mayby有人有更好的主意嗎?