将字节数组转换为字符串,然后再将其返回到字节数组

Mta*_*aby 3 java

我是Java的初学者,我需要转换为字符串的字节数组.
之后,我想将其从字符串更改为字节数组.
我尝试了下面的代码,但它没有用,因为第2行的返回值与原始数组不匹配:

byte[] comData = byteArray;
String value = new String(comData);
byte[] comData2 = value.getBytes();
// comData2 does not equal comData 
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 5

如果这是一个任意的字节集合,即它实际上不是编码文本,那么我建议你使用base64.有一个公共域库可以使它变得容易(或各种其他第三方库).

示例代码:

byte[] originalData = ...
String base64 = Base64.encode(myByteArray);
byte[] decoded = Base64.decode(base64);
Run Code Online (Sandbox Code Playgroud)

您的原始代码假定数据表示以平台默认编码编码的文本.你应该总是避免使用平台默认的编码-如果你希望使用文本编码,它通常是最好指定一个,例如

byte[] encodedText = text.getBytes("utf-8");
Run Code Online (Sandbox Code Playgroud)

(当然,如果您正在解码二进制数据,那么您无法选择编码 - 您需要知道要使用哪种编码.)