JAVA转换十六进制字符串

JAVA转换十六进制字符串,java,python,hex,decode,codec,Java,Python,Hex,Decode,Codec,在Python中,我可以将十六进制转换为这样的形式 s = "6025ce2069c61b15d8314f7cdd76b850dcd339547335d0e4a1e0b9915b0230cd" s.decode('hex') '`%\xce i\xc6\x1b\x15\xd81O|\xddv\xb8P\xdc\xd39Ts5\xd0\xe4\xa1\xe0\xb9\x91[\x020\xcd' 我的问题是如何在Java中做同样的事情 我在Java中这样做,但它引发了一个异常 new Stri

在Python中,我可以将十六进制转换为这样的形式

s = "6025ce2069c61b15d8314f7cdd76b850dcd339547335d0e4a1e0b9915b0230cd"

s.decode('hex')
'`%\xce i\xc6\x1b\x15\xd81O|\xddv\xb8P\xdc\xd39Ts5\xd0\xe4\xa1\xe0\xb9\x91[\x020\xcd'
我的问题是如何在Java中做同样的事情

我在Java中这样做,但它引发了一个异常

new String(Hex.decodeHex(str.toCharArray()), "UTF-8"
错误消息是这样的

Exception in thread "main" org.apache.commons.codec.DecoderException: Odd number of characters.
========================================================

我删除了UTF-8,但仍然得到相同的异常。。请帮忙

new String(Hex.decodeHex(combined.toCharArray()))

Exception in thread "main" org.apache.commons.codec.DecoderException: Odd number of characters.
这对我有用

public static void main(String[] args) throws ParseException, DecoderException, UnsupportedEncodingException {
        String hexString = "6025ce2069c61b15d8314f7cdd76b850dcd339547335d0e4a1e0b9915b0230cd";
        byte[] bytes = Hex.decodeHex(hexString.toCharArray());
        System.out.println(new String(bytes , "UTF-8"));
    }
输出

`%? i??1O|?v?P??9Ts5???[0?
这对我有用

public static void main(String[] args) throws ParseException, DecoderException, UnsupportedEncodingException {
        String hexString = "6025ce2069c61b15d8314f7cdd76b850dcd339547335d0e4a1e0b9915b0230cd";
        byte[] bytes = Hex.decodeHex(hexString.toCharArray());
        System.out.println(new String(bytes , "UTF-8"));
    }
输出

`%? i??1O|?v?P??9Ts5???[0?

错误信息非常清楚。您的十六进制数据不是UTF-8数据。Python代码从不试图将字节解释为文本编码,您所拥有的仍然是字节。@Hackerdarshi那么如何在Java中执行相同的操作?您的
组合
变量-它包含什么?请检查此问题的答案:错误消息足够清楚。您拥有的十六进制数据不是UTF-8数据。Python代码从不试图将字节解释为文本编码,你所有的都是字节。@Hackerdarshi那么如何在Java中做同样的事情呢?你的
组合的
变量-它包含什么?请检查这个问题的答案:结论:OP在
hexString
中没有他们认为自己拥有的数据。@MartijnPieters
hexString.matches(“-?[0-9a-fA-F]+”)
return true,请参阅这与OP的输入中没有偶数个十六进制数字有什么关系?并且在开始时允许一个
-
只会让事情变得更糟,而不是更好。结论:OP在
hextstring
中没有他们认为有的数据。@MartijnPieters
hextstring.matches(“-?[0-9a-fA-F]+”)
返回true,请参阅,这与OP的输入中没有偶数个十六进制数字有什么关系?而在一开始允许一个
-
,只会让事情变得更糟,而不是更好。