我的 base64 连接字符串有 = 字符。如何摆脱它们

My base64 concatenated string has = characters. How to get rid of them

我应该如何连接 base64 字符串以去掉“=”字符?

我从 servlet 发送了一个字节流[]数据作为 http 响应,我想在客户端打开 pdf 查看器。但是,因为这些额外的字符,我无法查看它。

我尝试用 +=、join、concat 连接,但每个子字符串的末尾仍然有 = 字符。

也许如果有一种方法可以连接没有最后一个字符的字符串。

标准的base-64编码将三个字节(3 * 8位)编码为4个字符(4 * 6位)。如果原始数据中的字节数不能被3整除,余数为1则加2=个字符,余数为2则加1=个字符

现在,不幸的是,如果第一个以填充字符结尾,您不能连接 2 个 base-64 编码的字符串 = - 您必须解码两者,连接二进制字符串*,然后重新编码,否则为后者部分将不同步,第二部分的所有字节将被错误解码。

[*] 完全没有必要重新编码第一部分,但为此进行优化并不一定值得。

我不确定我是否理解你的问题,但对我来说,这听起来像是你想要连接多个 Base64 编码的字符串,然后对它们进行解码。无论 = 个字符如何,这都行不通。

例如,查看以下 Base64 编码:

X20    -> IA==
X20 20 -> ICA=

但是连接 IAIA 并对其进行解码将导致 X 20 02 00

它不能工作的原因是,Base64 编码形式的每个字符可能代表多个未编码字节的部分,每个未编码字节可能由多个 Base64 字符表示。

正如 Antti Haapala 正确指出的那样:您必须先解码,然后连接输出,而不是相反。