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

2024-10-01 07:22:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我在谷歌上搜索了这些信息,但我找到的答案并不适用于我的案例。在

我有一个十六进制字符串如下:

hexString = '7d940ef9790c31334ac6f116814148b9abe73f32'

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

^{pr2}$

其结果是:

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

也就是说,字符串包含原始十六进制字符串的二进制信息。 我尝试在java中使用.getBytes(“encoding”)方法,但无法重现这个结果,不幸的是,这个结果对于我的应用程序来说是非常重要的(我需要完全相同的结果)。 我不是编码专家,所以很容易被我忽略了。在

我需要转换为与“binString”相同的字符串类型,例如md5摘要生成的byte[]数组,因此,如果您了解如何将byte[]转换为这样的字符串,我将不胜感激。在


Tags: 函数字符串答案信息二进制byte案例pr2
1条回答
网友
1楼 · 发布于 2024-10-01 07:22:46

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

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)存在问题

相关问题 更多 >