Go 获取解码ASCI85的长度

Go 获取解码ASCI85的长度,go,decode,base85,Go,Decode,Base85,ascii85具有获取编码MaxEncodedLen的最大长度的函数 我认为它应该有一个函数来获取解码时的长度,就像在Base64中一样 在我看来,虽然对MaxEncodedLen进行编码,但必须知道保存编码输出所需的字节数,即目标缓冲区大小。 其中,在解码的情况下,调用方可以传递大小等于源缓冲区的目标缓冲区,尽管目标缓冲区的大小可以更小。 或者,如果编码和解码的执行上下文/范围相同,我们可以使用原始源ie纯非编码缓冲区大小。 因此,预期的函数MaxDecodedLen是可选的。这里有一个函数,

ascii85具有获取编码MaxEncodedLen的最大长度的函数

我认为它应该有一个函数来获取解码时的长度,就像在Base64中一样


在我看来,虽然对MaxEncodedLen进行编码,但必须知道保存编码输出所需的字节数,即目标缓冲区大小。 其中,在解码的情况下,调用方可以传递大小等于源缓冲区的目标缓冲区,尽管目标缓冲区的大小可以更小。 或者,如果编码和解码的执行上下文/范围相同,我们可以使用原始源ie纯非编码缓冲区大小。
因此,预期的函数MaxDecodedLen是可选的。

这里有一个函数,用于计算n个编码字节的Go MaxDecodedLen

func MaxDecodedLen(n int) int {
    const binWordLen = 4
    return n * binWordLen
}
如果一个未编码组的所有四个字节都为零,则它们由单个字节(字符z)表示,而不是由五个感叹号表示!!!!!。在一些实现中,未编码的一组空格可以由单个字符y表示


与ascii85.Encode不同,ascii85.Decode除了ndst参数中写入的字节数外,还具有nsrc和flush参数中消耗的字节数,该参数允许程序员逐个解码多个块或单个块。因此,可以使用小于MaxDecodedLen的目标缓冲区。

@thiya:最大缓冲区大小的计算应考虑压缩。