UUencode 校验和错误

Posted

技术标签:

【中文标题】UUencode 校验和错误【英文标题】:UUencode checksum fault 【发布时间】:2011-09-20 11:50:09 【问题描述】:

我有一个试图用 UUencode 编码的数据流,以便将数据传递到外部芯片。该芯片一次接受 512 字节的原始数据。我用 UUencode 编码 512 个字节。

据我了解,数据应转换为 11 行 45 字节(编码后为 60 字节)和剩余 1 行 17 字节。

显然 17 个字节不能直接映射到 uuencoded 段,因为它不是 3 的倍数,但是当我返回 uuencoded 数据时,最后一行返回 24 个编码字节(或 18 个原始字节)。

这意味着我现在总共有 513 个字节的数据。我的问题是,这是我的 uuencode 算法的错误(尽管从纯粹的数学角度来看,我看不出它是怎么回事),或者,额外的字节来自哪里,我该如何再次摆脱它?

【问题讨论】:

UUE 编码?多么古朴。 base64 有什么问题,为什么要实现自己的? 【参考方案1】:

UUEncoding 512 bytes 将得到 684 个编码字节(不是 513)。长度为 384 字节的输入数据流将精确编码为 512 字节。

UUEncoding 只是一种将 3 个二进制字节输入数据段转换为 4 个文本字节输出数据段的方法。任何不是 3 字节长的输入段都用空字节填充,直到它是。 UUEncoding 算法没有原始数据长度的表示。

将此与 UUEncoded 文件进行对比,UUEncoded 文件通过将流分成特定长度的行并在每个编码数据行的前面添加行长度指示符来格式化并向数据流添加信息。在您的示例中,您的 17 个最终字节将被编码为 24 个字节,但该数据行前面将有一个字节,该字节将该行的长度指定为 17 而不是 18。

摆脱填充的唯一方法是首先通过对数据长度进行编码来了解它的存在。

【讨论】:

以上是关于UUencode 校验和错误的主要内容,如果未能解决你的问题,请参考以下文章

svnadmin 加载校验和错误

常用校验码(奇偶校验,海明校验,CRC)学习总结

关于解压文件遇到crc校验错误的问题

1的补码校验和甚至误码

校验码

奇偶校验区别---数据校验器