将byte []数组转换为包含java中的转义字符的字符串

时间:2017-03-28 10:14:49

标签: java python arrays string hash

我搜索谷歌有关此信息,但我发现的答案不适用于我的情况。

我有一个如下所示的HEX字符串:

hexString = '7d940ef9790c31334ac6f116814148b9abe73f32'

Python可以使用以下函数将此字符串转换为二进制值:

unhexlify('7d940ef9790c31334ac6f116814148b9abe73f32')

的结果是:

binString = '}\x94\x0e\xf9y\x0c13J\xc6\xf1\x16\x81AH\xb9\xab\xe7?2'

即包含原始十六进制字符串的二进制信息的字符串。 我试图在java中使用.getBytes(“encoding”)方法,但是我无法重现这个结果,不幸的是,这个结果对我的应用程序来说是 critical (我需要完全< / strong>相同的结果)。 我不是一个编码专家,所以很容易让我忽略一些东西。

我需要转换为与“binString”相同类型的字符串一个byte []数组,例如由一个md5摘要,所以任何关于如何将byte []转换为这样一个字符串的见解都将非常受欢迎。

1 个答案:

答案 0 :(得分:0)

它不是解决方案,但它可能有所帮助:

import java.nio.charset.Charset;
import javax.xml.bind.DatatypeConverter;

public class Main {

    public static void main(String args[])
    {
        String hexString = "7d940ef9790c31334ac6f116814148b9abe73f32";
        byte[] out = toByteArray(hexString);
        String result = new String(out,Charset.forName("UTF-8"));
        System.out.println(result);
    }
    public static byte[] toByteArray(String s) {
        return DatatypeConverter.parseHexBinary(s);
    }
}

我机器的输出是:

  

} ?? y13J ??? AH ???? 2

它可以打印所有ascii字符,但是转义字符有问题,例如\ x。