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

2022-09-01 04:50:49
String str = "9B7D2C34A366BF890C730641E6CECF6F";

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


答案 1

我认为提问者追求的是将十六进制值的字符串表示形式转换为表示该十六进制值的字节数组。

apache commons-codec有一个类,Hex

String s = "9B7D2C34A366BF890C730641E6CECF6F";    
byte[] bytes = Hex.decodeHex(s.toCharArray());

答案 2

Java SE 6 或 Java EE 5 现在提供了一种方法来执行此操作,因此不需要额外的库。

方法是DatatypeConverter.parseHexBinary

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

String str = "9B7D2C34A366BF890C730641E6CECF6F";
byte[] bytes = DatatypeConverter.parseHexBinary(str);

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