2013-05-08 3 views
1

Am используя метод parseHexBinary из javax.xml.bind.DatatypeConverter, но его дать мнеNullPointerException при использовании DatatypeConverter.parseHexBinary()

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(); 
     } 
    }  
} 
+0

@Duncan Джонс добавил код .. надеюсь, что не должно быть никакого вопроса? – AmitN

+0

Выглядит хорошо для меня - не могу понять, почему это вызовет NPE в 'parseHexBinary'. –

+0

Может быть его ошибка в версии 1.6.0_01 Java - нашла это http://stackoverflow.com/questions/12498256/why-the-npe-using-static-method-of-datatypeconverter – AmitN

ответ

2

Вы можете сделать польз.функц как этот

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; 
} 
+0

Да Сработало ... Спасибо вы... – AmitN

Смежные вопросы