十六进制编码的字符串到字节数组

Qai*_*ood 33 java arrays string bytearray

String str = "9B7D2C34A366BF890C730641E6CECF6F";
Run Code Online (Sandbox Code Playgroud)

我想转换str为字节数组,但str.getBytes()返回32个字节而不是16个字节.

pap*_*pap 52

我认为提问者之后是将十六进制值的字符串表示转换为表示该十六进制值的字节数组.

apache commons-codec有一个类,Hex.

String s = "9B7D2C34A366BF890C730641E6CECF6F";    
byte[] bytes = Hex.decodeHex(s.toCharArray());
Run Code Online (Sandbox Code Playgroud)

  • 还有`org.bouncycastle.util.encoders.Hex`来做那种工作. (3认同)

Arc*_*ano 37

Java SE 6或Java EE 5现在提供了一种方法,因此不需要额外的库.

方法是DatatypeConverter.parseHexBinary

在这种情况下,它可以如下使用:

String str = "9B7D2C34A366BF890C730641E6CECF6F";
byte[] bytes = DatatypeConverter.parseHexBinary(str);
Run Code Online (Sandbox Code Playgroud)

该类还为XML中通常使用的许多其他格式提供类型转换.

  • 这应该是公认的答案,因为它是仅使用核心Java库的最简单的解决方案. (5认同)
  • 到目前为止我遇到的这个问题最简单的解决方案 - 谢谢! (2认同)

Eng*_*uad 6

使用:

str.getBytes("UTF-16LE");
Run Code Online (Sandbox Code Playgroud)