在String中将String转换为字节

San*_*hav -1 java byte bytebuffer

可能重复:
使用Java将十六进制转储的字符串表示形式转换为字节数组?

我想将String转换"1B4322C2"为字节,但问题是,如果我使用getBytes()它将它转换为字符串的长度加倍的字节,我想将它们转换为字符串长度的一半.

例如,上面字符串的输出应该是 {0x1B , 0x43, 0x22, 0xC2}

谢谢

Jon*_*eet 5

(我现在已经投票决定以副本结束,我应该首先完成...但是在这里留下这个答案是有意义的,直到问题被删除......)

是的,所以你真正想做的是解析十六进制字符串.

您应该查看Apache Commons Codec,它具有Hex正是为此目的的类.就个人而言,我对API并不满意,但这应该有效:

Hex hex = new Hex();
byte[] data = (byte[]) hex.decode(text);
Run Code Online (Sandbox Code Playgroud)

要么:

byte[] data = Hex.decodeHex(text.toCharArray());
Run Code Online (Sandbox Code Playgroud)

(就个人而言,我希望你可以使用,byte[] data = Hex.decodeHexString(text);但我们去...如果你愿意,你总是可以编写自己的包装方法.)

如果您不想使用第三方库,Stack Overflow上的其他地方有很多实现,例如这个.