繁体   English   中英

Base 64如何处理结尾为零的二进制数据

[英]How does Base 64 handle binary data with zeroes at the end

据我了解规格,Base64编码器

a)提取源二进制文件,并将其填充为零,以使其为24字节长的倍数。

b)然后将其一次转换为6位,转换为64个字符的目标集(A..Z,a..z,0..9,+,-)。 如果发现最后两个字节(16位)已补零,则将最后两个字符转码为“ ==”。 如果发现最后一个字节(8位)已补零,则将最后一个字符转码为“ =”。

我的问题是,在步骤(b)中,如何知道最后一个字节是零,因为它们已被填充,而最后一个字节是零,因为它们是有效二进制源数据的一部分?

是否是负责(b)部分的子系统必须知道在(a)部分发生了什么

编码器(与解码器相对)将知道输入数据的长度,并能够弄清是否不输出任何内容,最后是“ =”或“ ==”。 您的问题假设您提到的两个阶段之间没有任何联系,但是在我所看到的实现中,这是不正确的。

我必须编写的实现根本没有进行第一阶段,因为它具有例程一次从输入流中提取6位组,并且每次都增加了byteCount。 然后,最后使用表达式“ byteCount%3 ”来决定将哪个字符串附加到输出流。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM