JAVA转换十六进制字符串
在Python,我可以十六进制转换为这样的事情..JAVA转换十六进制字符串
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?
结论:OP没有'hexString'他们认为他们有数据。 –
@MartijnPieters'hexString.matches(“ - ?[0-9a-fA-F] +”)'返回true,请参考[this](http://*.com/questions/11424540/verify-if-string-是 - 十六进制) –
这与OP的输入中没有偶数个十六进制数字有什么关系?而在开始时允许'-'只会让事情变得更糟,而不是更好。 –
错误信息是非常明显的。 – Hackerdarshi
您在那里的十六进制数据是*不是UTF-8数据*。 Python代码从不尝试将字节解释为文本编码,您所拥有的只是字节。 –
@Hackerdarshi所以如何在Java中做同样的事情? – Anderson