我有一个值为0xE20x800x93
的字符串。
我尝试像这样转换它们并且它可以工作
byte[] bs = new byte[]{
(byte) 0xE2,(byte) 0x80, (byte) 0x93
};
但我想要的是没有进行显式转换,我需要将其转换为字节数组。
或者至少是一种转换为字节对象的方法,而不是byte []对象。
答案 0 :(得分: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);
答案 1 :(得分:1)
从DatatypeConverter.parseHexBinary(str)
包
javax.xml.bind