NullPointerException saat menggunakan DatatypeConverter.parseHexBinary() [duplikat]

Saya menggunakan metode parseHexBinary dari javax.xml.bind.DatatypeConverter tetapi itu memberi saya

java.lang.NullPointerException
        at javax.xml.bind.DatatypeConverter.parseHexBinary(DatatypeConverter.java:310)
        at Test.main(Test.java:12)

ketika saya menggunakan Java versi 1.6.0_01 tetapi berfungsi dengan baik dengan Java v1.6.0.05 di Eclipse.

Apakah ada cara lain untuk melakukan ini di v1.6.0_01? Kalau tidak, saya harus meningkatkan.

import java.nio.charset.Charset;

public class Test{

   public static void main(String[] args) {

      try {
          String str1 = "F3F0";
          Charset charset = Charset.forName("Cp037");
          String s;

               byte b[] = javax.xml.bind.DatatypeConverter.parseHexBinary(str1);
               s = new String(b,charset); //cbuf.toString();
               System.out.println("String is: " + s);

      } catch (Exception e) {
          e.printStackTrace();
      }
   }    
}

person AmitN    schedule 08.05.2013    source sumber
comment
@Duncan Jones, menambahkan kode.. semoga tidak ada masalah?   -  person AmitN    schedule 08.05.2013
comment
Kelihatannya baik-baik saja bagi saya - tidak mengerti mengapa hal itu akan memicu NPE di parseHexBinary.   -  person Duncan Jones    schedule 08.05.2013
comment
Mungkin ini bug di versi Java 1.6.0_01 - temukan ini stackoverflow.com/questions/12498256/   -  person AmitN    schedule 10.05.2013


Jawaban (1)


Anda dapat membuat fungsi khusus seperti ini

byte[] parseHex(String str) {
    byte[] a = new BigInteger(str, 16).toByteArray();
    if (a.length != str.length() / 2) {
        a = Arrays.copyOfRange(a, 1, a.length);
    }
    return a;
}
person Evgeniy Dorofeev    schedule 08.05.2013
comment
Ya Berhasil... Terima kasih... - person AmitN; 09.05.2013