ascii85 には、エンコーディングの最大長を取得する機能がありますMaxEncodedLen()
。
Base64のようにデコード時に長さを取得する機能もあればいいと思います。
ascii85 には、エンコーディングの最大長を取得する機能がありますMaxEncodedLen()
。
Base64のようにデコード時に長さを取得する機能もあればいいと思います。
私の意見では、 MaxEncodedLen() のエンコードは、エンコードされた出力を保持するために必要なバイト数 (つまり、宛先バッファー サイズ) を知るために必須です。
デコードの場合、呼び出し元はソース バッファーと同じサイズの宛先バッファーを渡すことができますが、宛先バッファーのサイズは小さくてもかまいません。
または、エンコードとデコードの実行コンテキスト/スコープが同じ場合は、元のソース、つまりエンコードされていない単純なバッファー サイズを使用できます。したがって、予想される関数 MaxDecodedLen() はオプションです。
エンコードされたバイトの Goを計算する関数を次に示します。package ascii85
MaxDecodedLen()
n
func MaxDecodedLen(n int) int {
const binWordLen = 4
return n * binWordLen
}
エンコードされていないグループの 4 バイトすべてがゼロの場合、それらはz
5 つの感嘆符 ( !!!!!
) ではなく、1 バイトの文字 で表されます。一部の実装では、エンコードされていないスペースのグループは、単一の文字 で表すことができますy
。
ascii85.Decode()
は、 とは異なり、書き込まれたバイト数 ( ) パラメータに加えて、ascii85.Encode()
消費されたバイト数 ( nsrc
) とパラメータを持ちます。これにより、プログラマは複数のブロックまたは単一のブロックを 1 つずつデコードできます。したがって、 未満のデスティネーション バッファが使用される場合があります。flush
ndst
MaxDecodedLen()