1

ascii85 には、エンコーディングの最大長を取得する機能がありますMaxEncodedLen()

Base64のようにデコード時に長さを取得する機能もあればいいと思います。

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

4

2 に答える 2

0

私の意見では、 MaxEncodedLen() のエンコードは、エンコードされた出力を保持するために必要なバイト数 (つまり、宛先バッファー サイズ) を知るために必須です。
デコードの場合、呼び出し元はソース バッファーと同じサイズの宛先バッファーを渡すことができますが、宛先バッファーのサイズは小さくてもかまいません。
または、エンコードとデコードの実行コンテキスト/スコープが同じ場合は、元のソース、つまりエンコードされていない単純なバッファー サイズを使用できます。したがって、予想される関数 MaxDecodedLen() はオプションです。

于 2010-04-29T10:58:29.610 に答える
0

エンコードされたバイトの Goを計算する関数を次に示します。package ascii85 MaxDecodedLen()n

func MaxDecodedLen(n int) int {
    const binWordLen = 4
    return n * binWordLen
}

エンコードされていないグループの 4 バイトすべてがゼロの場合、それらはz5 つの感嘆符 ( !!!!!) ではなく、1 バイトの文字 で表されます。一部の実装では、エンコードされていないスペースのグループは、単一の文字 で表すことができますy

ascii85.Decode()は、 とは異なり、書き込まれたバイト数 ( ) パラメータに加えて、ascii85.Encode()消費されたバイト数 ( nsrc) とパラメータを持ちます。これにより、プログラマは複数のブロックまたは単一のブロックを 1 つずつデコードできます。したがって、 未満のデスティネーション バッファが使用される場合があります。flushndstMaxDecodedLen()

于 2010-04-29T20:51:48.480 に答える