NullPointerException при использовании DatatypeConverter.parseHexBinary()

Я использую метод parseHexBinary javax.xml.bind.DatatypeConverter, но это дает мне

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

когда я использую с Java версии 1.6.0_01, но отлично работает с Java v1.6.0.05 в Eclipse.

Есть ли другой способ сделать это в v1.6.0_01? В противном случае мне придется обновиться.

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 источник
comment
@Duncan Jones, добавил код .. надеюсь, проблем быть не должно?   -  person AmitN    schedule 08.05.2013
comment
Для меня это нормально - не понимаю, почему это может вызвать NPE в parseHexBinary.   -  person Duncan Jones    schedule 08.05.2013
comment
Может быть, это ошибка в версии Java 1.6.0_01 - нашел этот stackoverflow.com/questions/12498256/   -  person AmitN    schedule 10.05.2013


Ответы (1)


Вы можете создать собственную функцию, подобную этой

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
Да, сработало... Спасибо... - person AmitN; 09.05.2013