1

ascii85 具有获取编码最大长度的功能MaxEncodedLen()

我认为它应该有一个功能来获得解码时的长度,就像它在 Base64 中一样。

http://golang.org/pkg/encoding/ascii85/

4

2 回答 2

0

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

于 2010-04-29T10:58:29.610 回答
0

这是一个为编码字节计算 Go 的函数。package ascii85 MaxDecodedLen()n

func MaxDecodedLen(n int) int {
    const binWordLen = 4
    return n * binWordLen
}

如果未编码组的所有四个字节都为零,则它们由单个字节(字符)表示z,而不是由五个感叹号 ( !!!!!) 表示。在一些实现中,未编码的一组空格可以由单个字符来表示y

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

于 2010-04-29T20:51:48.480 回答