在Java中将字符串转换为字节

在Java中将字符串转换为字节,java,pack,Java,Pack,可能重复: 我有一个MD5字符串 de70d4de8c47385536c8e08348032c3b 我需要它作为字节值 DE 70 D4 DE 8C 47 38 55 36 C8 E0 83 48 03 2C 3B 这应该类似于Perlspack(“H32”);函数。在字符串上循环,并使用Byte.decode(String)函数填充字节数组。在字符串上循环,并使用Byte.decode(String)函数填充字节数组。您可以查看Apache Commons编解码器您可以查看Apache

可能重复:

我有一个MD5字符串

de70d4de8c47385536c8e08348032c3b
我需要它作为字节值

DE 70 D4 DE 8C 47 38 55 36 C8 E0 83 48 03 2C 3B

这应该类似于Perls
pack(“H32”);
函数。

字符串上循环,并使用
Byte.decode(String)
函数填充字节数组。

字符串上循环,并使用
Byte.decode(String)
函数填充字节数组。

您可以查看Apache Commons编解码器

您可以查看Apache Commons编解码器

未经验证:

String md5 = "de70d4de8c47385536c8e08348032c3b";
byte[] bArray = new byte[md5.length() / 2];
for(int i = 0, k = 0; i < md5.lenth(); i += 2, k++) {
    bArray[k] = (byte) Integer.parseInt(md5[i] + md5[i+1], 16);
}
String md5=“de70d4de8c47385536c8e08348032c3b”;
byte[]baray=新字节[md5.length()/2];
对于(inti=0,k=0;i
未经验证:

String md5 = "de70d4de8c47385536c8e08348032c3b";
byte[] bArray = new byte[md5.length() / 2];
for(int i = 0, k = 0; i < md5.lenth(); i += 2, k++) {
    bArray[k] = (byte) Integer.parseInt(md5[i] + md5[i+1], 16);
}
String md5=“de70d4de8c47385536c8e08348032c3b”;
byte[]baray=新字节[md5.length()/2];
对于(inti=0,k=0;i
有很多方法可以做到这一点。这里有一种:

public static void main(String[] args) {

    String s = "de70d4de8c47385536c8e08348032c3b";

    Matcher m = Pattern.compile("..").matcher(s);

    List<Byte> bytes = new ArrayList<Byte>();
    while (m.find())
        bytes.add((byte) Integer.parseInt(m.group(), 16));

    System.out.println(bytes);
}

有很多方法可以做到这一点。这里有一个:

public static void main(String[] args) {

    String s = "de70d4de8c47385536c8e08348032c3b";

    Matcher m = Pattern.compile("..").matcher(s);

    List<Byte> bytes = new ArrayList<Byte>();
    while (m.find())
        bytes.add((byte) Integer.parseInt(m.group(), 16));

    System.out.println(bytes);
}

因此,您想将字符串从以下内容转换为:
de70d4de8c47385536c8e08e08348032c3b
de70d4de8c47385536c8e08e0848032c3b
?几乎,我不想将其视为文本文件中的字符串,而是字节。您能编写单元测试吗?我不知道您指的是哪种数据类型。@npinti看起来需要它(很多“如何在Java中解析十六进制”的问题——我选择了一个例子。)因此,您想将字符串从以下内容转换为:
de70d4de8c47385536c8e08e08348032c3b
de70d4de8c47385536c8e08e0848032c3b
?几乎,我不想将其视为文本文件中的字符串,而是字节。您能编写单元测试吗?我不知道您指的是哪种数据类型。@npinti看起来需要它(很多“如何在Java中解析十六进制”的问题-我选择了一个例子。)例如
“de”
不能用
字节解析。解码
,所以我认为它不起作用。你需要把“0x”作为前缀。例如
“de”
不能用
字节解析。解码
所以我认为它不起作用。你需要把“0x”作为前缀。