-1

有时我无法提供整个字符串。但是使用截断的字符串,Base64 API 也可以对其进行解码。base64 如何理解字符串的结尾

4

2 回答 2

1

base64如何理解字符串结尾

您还没有说您使用的是哪个base64 API,但通常他们要求您提供的字符串长度是 4 个字符的倍数。base64 字符串中的每 4 个字符对应 3 个字节。

如果整体二进制数据不是 3 个字节的倍数,则最后 4 个字符包含字符的填充=指示所需长度。有关更多详细信息,请参阅Wikipedia Base64 文章中的填充部分。

于 2013-04-18T13:41:40.260 回答
0

在 Base64 中,每个字符代表 64 个值之一:一个 6 位值。但是字节是 8 位值,因此 base-64 编码的数据必须以某种方式是 6 和 8 的倍数

好吧,一个 6 位字符显然不会填满一个字节,但是两个 6 位字符(12 位)并不完全填满两个字节。三个 6 位字符(18 位)填充比两个字节多一点,但不是三个。但是,四个 6 位字符(24 位)正好填充三个 8 位字节。

因此,base64 字符串的长度必须是 4 个字符的倍数,以便能够用数据填充整个 8 位字节的倍数。这意味着您可以将 base64 编码数据拆分为四个字符的任意倍数,并且它会起作用。但是,如果您在任何其他位置拆分数据,它可能无法正常工作。

这也适用于数据的结尾。例如,如果我只有 6 个 8 位字节要编码(40 位),但 base64 字符串的长度必须是 4 个 6 位字符(48 位)的两倍,那么我就是 8 位数据短。对于那些剩余的(部分)6 位字符,该=字符表示后面没有特定数据。

于 2013-04-18T14:11:12.703 回答