2012-07-13 5 views
6

मैं जावा के लिए नया हूं, इसलिए, मुझे लगता है कि, मानक कार्य के लिए मानक समाधान का उपयोग करना चाहता हूं। टैग और मानों की लंबाई ज्ञात नहीं है।क्या बीईआर-टीएलवी के लिए जावा पार्सर है?

+0

क्या आपको वह चाहिए जो आपको चाहिए? https://github.com/VakhoQ/tlv-encoder – grep

उत्तर

0

मुझे बीईआर टीएलवी के लिए Javacard कक्षाएं मिलीं। उम्मीद है कि

3

here में ट्यूटोरियल बीईआर-टीएलवी को पार्स करने के तरीके पर एक सुझाव देता है। JACCAL

+0

thsi one fantastci है! – null

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

सरल-टीएलवी बेर-टीएलवी से अलग है, और एक साधारण टीएलवी पार्सर अक्सर बेर-टीवीएल डेटा पर दुर्घटनाग्रस्त हो जाएगा –

0

आप इस बीईआर-टीएलवी पार्सर का उपयोग कर सकते हैं: 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 आप के लिए उपयोगी हो सकता है पार्स करने के लिए। मैंने इसे सरल टीएलवी पार्सिंग के लिए इस्तेमाल किया है। वैसे भी यह एमआईटी लाइसेंस के साथ है और आप इसे संशोधित कर सकते हैं।

https://github.com/VakhoQ/tlv-encoder 
संबंधित मुद्दे