我知道base64编码是什么以及如何base64在C#中计算编码,但是我已经多次看到当我将字符串转换为base64时,最后会有一个=.
提出了几个问题:
base64字符串总是以结束=?=最后会附加?Bad*_*laj 253
1,无
2-简而言之:第65个字符("="符号)仅用作编码消息的最后过程的补充.
如果您的字符串具有3个字符的倍数,则不会有'='符号,因为Base64编码需要每三个字节(8位)并将它们表示为ASCII标准中的四个可打印字符.
细节 :
(a)如果你想编码
ABCDEFG <=> [ ABC] [ DEF] [G
Base64将处理(产生4个字符)第一个块和第二个(因为它们是完整的)但是对于第三个,它将==在输出中添加一个double 以完成所需的4个字符.因此,结果将是 QUJD REVG Rw == (没有空格)
(b)如果你想编码......
ABCDEFGH <=> [ ABC] [ DEF] [GH
同样,它只会=在输出结尾添加一个单词 来获得4个字符,结果将是 QUJD REVG R0g = (没有空格)
And*_*are 251
它用作填充物.
更完整的答案是base64编码的字符串并不总是以a =结尾,=如果需要将字符串填充到适当的长度,它将只以一个或两个结束.
Sam*_*way 11
等号(=)用作某些形式的base64编码中的填充.关于base64 的维基百科文章包含所有细节.
它是填充物.来自http://en.wikipedia.org/wiki/Base64:
理论上,解码不需要填充字符,因为可以从Base64数字的数量计算丢失字节的数量.在一些实现中,填充字符是强制性的,而对于其他实现,则不使用填充字符.需要填充字符的一种情况是连接多个Base64编码文件.
小智 7
http://www.hcidata.info/base64.htm
编码"玛丽有"到Base 64
在这个例子中,我们使用一个简单的文本字符串("玛丽有"),但无论数据是什么(例如图形文件),原则都保持不变.为了将每24位输入数据转换为32位输出,Base 64编码将24位分成4个6位的块.我们注意到的第一个问题是"Mary have"不是3个字节的倍数 - 它是8个字节长.因此,最后一组位只有4位长.为了解决这个问题,我们添加了两个额外的'0'位,并通过在末尾添加'='来记住这一事实.如果要转换为Base 64的文本字符串长度为7个字节,则最后一个组将具有2个位.在这种情况下,我们会添加四个额外的'0'位,并通过在结尾放置'=='来记住这一事实.
=是一个填充字符。如果输入流的长度不是 3 的倍数,则会添加填充字符。这是解码器所要求的:如果不存在填充,则最后一个字节将具有错误数量的零位。
这里有更好更深入的解释:https://base64tool.com/detect-whether-provided-string-is-base64-or-not/
| 归档时间: |
|
| 查看次数: |
141945 次 |
| 最近记录: |