Sono nuovo di Java, quindi mi piacerebbe utilizzare la soluzione standard per, penso, il compito standard. La lunghezza di tag e valori non è nota.Esiste un parser Java per BER-TLV?
risposta
Ho trovato le classi Javacard per BER TLV. Spero che questi aiuti
ho fatto un semplice parser sulla base delle informazioni fornite qui: http://www.codeproject.com/Articles/669147/Simple-TLV-Parser
non so se questo supporto di codice tutti gli standard, ma funziona per me.
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;
}
simple-tlv è diverso da ber-tlv e un semplice parser tlv si bloccherà spesso sui dati ber-tvl –
Il progetto javaemvreader contiene some code to parse BER-TLV.
È possibile utilizzare questo parser BER-TLV: source code on git o download jar.
Esempi:
come analizzare
byte[] bytes = HexUtil.parseHex("50045649534157131000023100000033D44122011003400000481F");
BerTlvParser parser = new BerTlvParser(LOG);
BerTlvs tlvs = parser.parse(bytes, 0, bytes.length);
come costruire
byte[] bytes = new BerTlvBuilder()
.addHex(new BerTag(0x50), "56495341")
.addHex(new BerTag(0x57), "1000023100000033D44122011003400000481F")
.buildArray();
potrebbe essere this free library può essere utile per voi. Ho usato questo per l'analisi semplice di TLV. Comunque è con la licenza MIT e puoi modificarlo.
https://github.com/VakhoQ/tlv-encoder
- 1. Esiste un parser Java per il linguaggio Java?
- 2. Esiste un semplice parser di risposta http per Java?
- 3. Esiste un parser HL7 leggero e leggero per Java?
- 4. Esiste un parser PDF per PHP?
- 5. Esiste un parser CSS per C#?
- 6. Esiste un parser .NET CQL?
- 7. Esiste un buon parser EDIFACT open source in Java?
- 8. parser SPARQL per Java Codice
- 9. parser robots.txt java
- 10. Esiste un parser GEDCOM scritto in Python?
- 11. Un parser di schema MySQL in Java?
- 12. Esiste un framework per la definizione dei parser in JavaScript?
- 13. Parser RTF Java
- 14. Parser XML Java per file enormi
- 15. Java CLI Parser
- 16. Esiste un parser XML Python progettato pensando agli umani?
- 17. Ricerca di un parser CSS in java
- 18. Un parser JavaScript per DOM
- 19. Suggerimenti per scrivere un parser di file in Java?
- 20. Benchmark per parser JSON?
- 21. Java SAX progresso parser monitoraggio
- 22. parser completo LaTeX in Java
- 23. Esiste un IDE online per Java?
- 24. Esiste un sdk java per cygwin?
- 25. Esiste un "debugger visivo" per Java?
- 26. PDF Parser API in Java
- 27. Risorse online per scrivere un parser-generator
- 28. python: esiste un parser XML implementato come generatore?
- 29. parser Java scritto in JavaScript
- 30. semplice fisica di quantità unità parser per Java
potrebbe essere questo quello che ti serve? https://github.com/VakhoQ/tlv-encoder – grep