我是Java的新手,所以我想爲標準任務使用標準解決方案。標籤和值的長度未知。是否有用於BER-TLV的Java解析器?
6
A
回答
0
我發現了Javacard類的BER TLV。希望這些幫助
3
1
我做了一個簡單的解析器基於這裏提供的信息:http://www.codeproject.com/Articles/669147/Simple-TLV-Parser
我不知道如果這個代碼支持所有的標準,但它爲我工作。
public static Map<String, String> parseTLV(String tlv) {
if (tlv == null || tlv.length()%2!=0) {
throw new RuntimeException("Invalid tlv, null or odd length");
}
HashMap<String, String> hashMap = new HashMap<String, String>();
for (int i=0; i<tlv.length();) {
try {
String key = tlv.substring(i, i=i+2);
if ((Integer.parseInt(key,16) & 0x1F) == 0x1F) {
// extra byte for TAG field
key += tlv.substring(i, i=i+2);
}
String len = tlv.substring(i, i=i+2);
int length = Integer.parseInt(len,16);
if (length > 127) {
// more than 1 byte for lenth
int bytesLength = length-128;
len = tlv.substring(i, i=i+(bytesLength*2));
length = Integer.parseInt(len,16);
}
length*=2;
String value = tlv.substring(i, i=i+length);
//System.out.println(key+" = "+value);
hashMap.put(key, value);
} catch (NumberFormatException e) {
throw new RuntimeException("Error parsing number",e);
} catch (IndexOutOfBoundsException e) {
throw new RuntimeException("Error processing field",e);
}
}
return hashMap;
}
+0
simple-tlv與ber-tlv不同,簡單的tlv解析器經常會在ber-tvl數據上崩潰 – 2014-11-26 13:05:02
1
0
您可以使用此BER-TLV分析器:source code on git或download jar。
例子:
如何分析
byte[] bytes = HexUtil.parseHex("50045649534157131000023100000033D44122011003400000481F");
BerTlvParser parser = new BerTlvParser(LOG);
BerTlvs tlvs = parser.parse(bytes, 0, bytes.length);
如何建立
byte[] bytes = new BerTlvBuilder()
.addHex(new BerTag(0x50), "56495341")
.addHex(new BerTag(0x57), "1000023100000033D44122011003400000481F")
.buildArray();
0
可能是this free library能對您有用。我用這個來進行簡單的TLV解析。無論如何,這是與麻省理工學院的許可證,你可以修改它。
https://github.com/VakhoQ/tlv-encoder
相關問題
- 1. Java org.w3c.dom:是否有Java解析器庫?
- 2. 是否有用於PHP的iCalendar文件的現有解析器?
- 3. Gradle解析器是否可用於Ant?
- 4. 是否有用於解析Excel 2007文件的Java開源庫?
- 5. 瞭解用於Java的DOM解析器
- 6. Jericho HTML解析器是否適用於Google App Engine for Java?
- 7. 是否有Java字節碼的通用解析器?
- 8. 在Java中是否有任何可用的SMS Pdu解析器?
- 9. 是否有任何用Java編寫的ADA解析器?
- 10. 是否有用於.NET的拉式JSON StreamReader解析器?
- 11. PHP HTML解析器(是否沒有好的HTML解析器)
- 12. Java中是否有任何Java x509certificate ClientHello解析器?
- 13. 是否有PHP的解析器?
- 14. 用於java的SQL解析器
- 15. 在java中是否有一個好的替代URL解析器
- 16. 是否有適合Java的輕量級HL7解析器?
- 17. 是否有支持韓語的Java SQL解析器?
- 18. Interning字符串是否有助於解析器的性能?
- 19. 是否有解析冒號和逗號符號的解析器?
- 20. 解析器,用於Java的生成器,具有以下要求
- 21. 是否有類似於Java/.Net分析器的SQL Server分析器?
- 22. 是否有用於構建合金語言解析器的外部解析器生成器工具
- 23. 是否有一種工具可用於生成不需要結果解析器運行時的DSL解析器?
- 24. 是否存在用於nodejs的(JSON或XML)流解析器?
- 25. 是否有用於XLSM(Excel with Macro)解析/編輯的PHP庫?
- 26. 在Java中是否有用於文本分析/挖掘的API?
- 27. 是否有用於Java應用服務器的.NET模擬器?
- 28. 是否有支持左遞歸的基於PEG的解析器生成器?
- 29. 是否可以在JAVA中結合使用XML解析器?
- 30. 是否有一個用於迭代器的數字解析函數?
可能是你需要的那個? https://github.com/VakhoQ/tlv-encoder – grep 2017-12-14 11:38:47