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转换为字节?
答案 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);