ASCII85具有获得编码的最大长度的功能 MaxEncodedLen().

我认为它应该具有太多的功能,无法像Base64中的解码一样长时间。

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

有帮助吗?

解决方案

这是计算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() 可能用过了。

其他提示

我认为,在编码MaxenCodedLen()时,必须知道保存编码输出所需的字节数(IE目标缓冲区大小)。
在解码的情况下,呼叫者可以通过大小的目标缓冲区等于源缓冲区,尽管目标缓冲区的大小较小。
另外,如果执行上下文/编码和解码的范围相同,我们可以使用原始源IE IE普通的非编码缓冲区大小。因此,预期函数MaxDecodedLen()是可选的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top