ascii85具有获取最大编码长度的功能MaxEncodedLen()。我认为它应该像在Base64中一样,也具有在解码时获得长度的功能。http://golang.org/pkg/encoding/ascii85/
2 回答
慕桂英3389331
TA贡献2036条经验 获得超8个赞
这是一个为编码字节计算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()可以使用小于的目标缓冲区。
PIPIONE
TA贡献1829条经验 获得超9个赞
我认为,在对MaxEncodedLen()进行编码时,必须知道保持编码输出所需的字节数(即目标缓冲区大小)。
在解码的情况下,调用方可以传递大小等于源缓冲区的目标缓冲区,尽管目标缓冲区的大小可以较小。
或者,如果编码和解码的执行上下文/范围相同,则可以使用原始源,即普通非编码缓冲区大小。因此,期望的函数MaxDecodedLen()是可选的。
- 2 回答
- 0 关注
- 305 浏览
添加回答
举报
0/150
提交
取消