【发布时间】:2025-12-15 17:15:01
【问题描述】:
我使用DeflaterOutputStream 和ByteArrayOutputStream 进行测试。
String a = "Hello world";
byte[] bArr = a.getBytes();
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(bArr.length);
DeflaterOutputStream deflaterOutputStream = new DeflaterOutputStream(byteArrayOutputStream);
deflaterOutputStream.write(bArr);
deflaterOutputStream.close();
bArr = byteArrayOutputStream.toByteArray();
System.out.println("out: "+Base64.getEncoder().encodeToString(bArr));
结果,我得到了这个 Base64 字符串:
eJzzSM3JyVcozy/KSQEAGKsEPQ==
如何从这个 Base64 字符串中再次获取“Hello world”?
【问题讨论】:
-
欢迎来到 Stack Overflow。请通过tour 了解 Stack Overflow 的工作原理,并阅读How to Ask 了解如何提高问题的质量。请显示您尝试过的尝试以及您从尝试中得到的问题/错误消息。
-
如果有
encodeToString方法,也可能有decodeFromString或类似方法? -
在使用不带
Charset参数的getBytes()时要小心,因为将使用平台默认字符集,这可能是无意的。 -
knittl, encodeToString - 它只是将字节数组转换为 base64。如果你使用 decodeformString 那么你将得到字节数组 ByteArrayOutputStream 类型,但不是字符串“Hello World”。
-
拿起绳子,把它推过你推过原件的相反过程。即将Base64解码为
byte[],包装在ByteArrayInputStream中,InflaterInputStream中的所有结果读入另一个byte[],然后使用平台默认编码将其包装在String中。跨度>
标签: java base64 bytearrayoutputstream