ascii85有一个函数可以获取编码MaxEncodedLen()的最大长度。
我认为它应该有一个函数来获得解码时的长度,就像在Base64中一样。
http://golang.org/pkg/encoding/ascii85/
发布于 2010-04-30 04:51:48
这是一个计算n编码字节的Go package ascii85 MaxDecodedLen()的函数。
func MaxDecodedLen(n int) int {
const binWordLen = 4
return n * binWordLen
}如果未编码组的所有四个字节都为零,则它们由单个字节(字符z )而不是五个感叹号(!!!!!)表示。在一些实施方式中,未编码的空格组可以由单个字符y表示。
与ascii85.Encode()不同,ascii85.Decode()具有消耗的字节数(nsrc)和flush参数,以及写入的字节数(ndst)参数,这允许程序员逐段解码多个块或单个块。因此,可以使用小于MaxDecodedLen()的目的地缓冲器。
发布于 2010-04-29 18:58:30
在我看来,在编码时,MaxEncodedLen()必须知道保存编码输出所需的字节数(即目标缓冲区大小)。
其中,在解码的情况下,调用者可以传递大小等于源缓冲区的目标缓冲区,尽管目标缓冲区可以更小。
或者,如果编码和解码的执行上下文/范围相同,我们可以使用原始源,即普通的非编码缓冲区大小。因此,预期的函数MaxDecodedLen()是可选的。
https://stackoverflow.com/questions/2736604
复制相似问题