如何修改将字节转换为String的方法,以便将String转换为字节?

时间:2018-07-17 09:30:46

标签: java cryptography rsa

private static String bytesToString(byte[] encrypted) {
    //above method converts bytes to string
    String test = "";

    for (byte b : encrypted) {
        test += Byte.toString(b);
    }

    return test;
}

我有将此字节转换为String的方法。如何修改它以便将String转换为字节?

3 个答案:

答案 0 :(得分:3)

这与您正在进行的转换是不可能的。

让我们想象一下您正在“转换”的字节是这样的:

new byte[] {1, 0}

那是两个字节,结果字符串是

"10"

现在让我们想象一下字节是这样的:

new byte[] {10}

那是一个字节,结果字符串是

"10"

因此,两个不同的字节序列可以产生相同的字符串“ 10”。因此,无法确定是否应将字符串“ 10”转换回{1, 0}{10}或其他任何形式。

答案 1 :(得分:1)

您的“修改”应该是使用base-64对字节数组进行编码和解码:

private static String bytesToString(byte[] encrypted) {
    return Base64.getUrlEncoder().encodeToString(encrypted);
}

private static byte[] stringToBytes(String encrypted) {
    return Base64.getUrlDecoder().decode(encrypted);
}

这将使您能够明确编码任何字节数组,仅使用7位US-ASCII字符将其存储为文本并进行传输,然后恢复原始数据。

答案 2 :(得分:-2)

您可以直接使用String构造函数。

String str = new String(bytes, StandardCharsets.UTF_8);

查看文档string constructor with bytecode