1

我有一个带有 value 的字符串0xE20x800x93。我尝试像这样转换它们并且它有效

byte[] bs = new byte[]{
(byte) 0xE2,(byte) 0x80, (byte) 0x93
}; 

但我想要的是不进行显式转换,我需要将其转换为字节数组。

或者至少是一种转换成字节对象的方法,而不是字节[]对象。

4

2 回答 2

2

您可以在一行(尽管很长)中完成:

byte[] bytes = Arrays.copyOfRange(new ByteBuffer().putInt(Integer.parseInt(str.replace("0x", ""), 16)).array(), 1, 4);

这假设您正好有 3 个字节要获取。如果它是可变长度,则以下代码更通用,但稍微冗长一些,因为它使用输入的长度来确定最终结果的大小:

byte[] bytes = Arrays.copyOfRange(new ByteBuffer().putInt(Integer.parseInt(str.replace("0x", ""), 16)).array(), 4 - str.length() / 4, 4);
于 2013-06-24T00:24:57.340 回答
1

DatatypeConverter.parseHexBinary(str)javax.xml.bind包中尝试

于 2013-06-24T01:49:41.780 回答