【问题标题】:NullPointerException when using DatatypeConverter.parseHexBinary() [duplicate]使用 DatatypeConverter.parseHexBinary() 时出现 NullPointerException [重复]
【发布时间】:2013-05-10 17:43:21
【问题描述】:

我正在使用 javax.xml.bind.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 但在 Eclipse 中使用 Java v1.6.0.05 时可以正常工作。

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

【问题讨论】:

  • @Duncan Jones,添加了代码..希望不会有任何问题?
  • 对我来说看起来不错 - 不明白为什么会在 parseHexBinary 中触发 NPE。
  • 可能是 1.6.0_01 Java 版本中的一个错误 - 发现这个 stackoverflow.com/questions/12498256/…

标签: java nullpointerexception type-conversion


【解决方案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;
}

【讨论】:

  • 是的,它成功了...谢谢...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-20
  • 2016-03-31
相关资源
最近更新 更多