UUencode校验和错误

时间:2011-06-22 15:10:22

标签: algorithm math byte uuencode

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

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

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

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

1 个答案:

答案 0 :(得分:7)

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

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

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

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