转换字节[]的String表示回我有一个String
可变的字节[]
问题描述:
说string
我转换成byte[]
,然后我编码的使用Base64
在作为byte[]
说encodedByteArr
相同。使用下面的代码:转换字节[]的String表示回我有一个<code>String</code>可变的字节[]
String string = "Test";
byte[] encodedByteArr= null;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(check);
encodedByteArr= Base64.encodeBase64(bos.toByteArray());
oos.flush();
oos.close();
bos.close();
System.out.println("Encoded value is:- "+encodedByteArr);
输出是:
编码值是: - [B @ 5fd0d5ae
现在,我接收在另一种方法中相同的编码值作为String
,意思是:
String string = "[[email protected]";
而这只不过是一个String
我在上面的代码中生成的byte[]
的表示。
现在我的任务是实际解码值并取回原始文本,即。
为此,我希望byte[]
的String
表示回到byte[]
而不失其完整性。
答
所有的Java数组都是这样打印的。这是他们工作的方式。如果要打印数组的内容,则必须使用java.util.Arrays
中的静态方法。
System.out.println("Encoded value is:- "+Arrays.toString(encodedByteArr));
这是一种愚蠢的,但这是它的工作方式。
答
现在我的任务就是实际解码值,回到原文回
这听起来像你要进行解码,以产生原始的字符串Base64编码的字符串?
在Java 8,你可以做
import java.util.Base64;
byte[] decoded = Base64.getDecoder().decode(string);
String original = new String(decoded);
一个完整的 “往返” 看起来像:
String original = "Hello";
byte[] encodedBytes = Base64.getEncoder().encode(original.getBytes());
String encodedString = new String(encodedBytes);
System.out.println(encodedString); // "SGVsbG8="
byte[] decodedBytes = Base64.getDecoder().decode(encodedString);
String decodedString = new String(decodedBytes);
System.out.println(decodedString); // "Hello"
见https://*.com/questions/409784/whats-the -simplest-way-to-print-a-java-array –
你实际上已经解决了你的问题(我认为)。问题在于你以错误的方式打印数组......并且输出使你认为你做错了。 –
你永远不会解码任何''B @ 5fd0d5ae'。您需要比默认的'toString()'更有意义的编码。 – shmosel