ascii85具有获取编码MaxEncodedLen()
的最大长度的函数。
我认为它应该有一个函数来获得解码时的长度,就像它在Base64中一样。
答案 0 :(得分:0)
在我看来,编码MaxEncodedLen()必须知道保存编码输出所需的字节数(即目标缓冲区大小)。
在解码的情况下,调用者可以传递大小等于源缓冲区的目标缓冲区,尽管目标缓冲区的大小可以较小。
或者,如果编码和解码的执行上下文/范围相同,我们可以使用原始源,即普通的非编码缓冲区大小。
因此,期望的函数MaxDecodedLen()是可选的。
答案 1 :(得分:0)
这是为MaxDecodedLen()
个编码字节计算Go package ascii85
n
的函数。
func MaxDecodedLen(n int) int {
const binWordLen = 4
return n * binWordLen
}
如果未编码组的所有四个字节都为零,则它们由单个字节(字符z
)表示,而不是由五个感叹号(!!!!!
)表示。在一些实现中,未编码的空间组可以由单个字符y
表示。
ascii85.Decode()
不同, ascii85.Encode()
除了写入的字节数(nsrc
外,还有消耗的字节数(flush
)和ndst
个参数。 )参数,允许程序员逐块解码多个块或单个块。因此,可以使用小于MaxDecodedLen()
的目标缓冲区。