Algorithm UUencode校验和错误

Algorithm UUencode校验和错误,algorithm,math,byte,uuencode,Algorithm,Math,Byte,Uuencode,我有一个数据流,我试图用UUencode编码,以便将数据传递到外部芯片。芯片一次接受512字节的原始数据。我用UUencode编码512字节 据我所知,数据应转换为11行45字节(编码后为60字节)和1行17字节 显然,17个字节不能直接映射到uuencoded段,因为它不是3的倍数,但是当我返回uuencoded数据时,最后一行返回24个编码字节(或18个原始字节) 这意味着我现在总共有513字节的数据。我的问题是,这是我的uuencode算法的一个错误(尽管从纯数学的角度来看,我看不出它是怎

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

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

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


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

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

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

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


消除填充的唯一方法是首先通过编码数据的长度来知道它在那里。

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

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

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


消除填充的唯一方法是首先通过编码数据的长度来知道它在那里。

UUEncoding?真奇怪。base64有什么问题,为什么要实现自己的编码?真奇怪。base64有什么问题,为什么要实现自己的?