質問

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
}

エンコードされていないグループの4バイトすべてがゼロの場合、それらは単一のバイト、文字で表されます z, 、5つの感嘆符ではなく(!!!!!)。いくつかの実装では、エンコードされていないスペースのグループが単一の文字で表される場合があります y.

ascii85.Decode(), 、 ようではない ascii85.Encode(), 、消費されるバイト数があります(nsrc) と flush 書かれた多数のバイトに加えて、パラメーター(ndst)パラメーター。これにより、プログラマーは複数のブロックまたは単一のブロックごとにデコードできます。したがって、より少ない宛先バッファー MaxDecodedLen() 使用することができます。

他のヒント

私の意見では、MaxEncodedLen()をエンコードすることは、エンコードされた出力(つまり宛先バッファサイズ)を保持するために必要なバイト数を知るために必須です。
デコードの場合、発信者は宛先バッファーのサイズが低い場合でも、ソースバッファーに等しいサイズの宛先バッファーを渡すことができます。
または、エンコードとデコードの実行コンテキスト/範囲が同じ場合、元のソースIEプレーンエンコードバッファサイズを使用できます。したがって、予想される関数、maxdecodedlen()はオプションです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top