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