icz*_*cza 5
ascii85.MaxEncodedLen()
返回给定输入字节数的最大输出字节数。您可以使用这个上限估计。
返回实际使用/写入的字节数ascii85.Encode()
。如果您将更大的切片传递给Encode()
,则必须使用它来切片目标切片,超出此范围的字节是“垃圾”。
同样适用ascii85.Decode()
:它返回写入的字节数,如果您传递了更大的切片,则必须使用它来切片目标。
此外,由于解码可能失败(无效输入),您还应该检查返回的错误。
此外,由于不能保证给定的输入将导致输出是使用的 32 位块的倍数,因此传递flush=true
以使用给定的输入切片(而不是等待更多输入)。
最终的更正代码:
s := []byte("Hello, playground")
maxlen := ascii85.MaxEncodedLen(len(s))
dst := make([]byte, maxlen)
n := ascii85.Encode(dst, s)
dst = dst[:n]
fmt.Println(string(dst))
dst2 := make([]byte, maxlen)
n, _, err := ascii85.Decode(dst2, dst, true)
if err != nil {
panic(err)
}
dst2 = dst2[:n]
fmt.Println(string(dst2))
哪些输出(在Go Playground上尝试):
87cURD_*#MCghU%Ec6)<A,
Hello, playground
更多推荐
字符串,为其,上将,长度,ASCII
发布评论