2010-04-29 19 views

回答

0

這裏有一個函數來計算Go package ascii85MaxDecodedLen()對於n編碼的字節。

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

如果所有四個字節的未編碼的組都是零,它們是由一個單一的字節,字符z表示,而不是由5個感嘆號(!!!!!)。在一些實現中,未編碼的空格組可由單個字符y表示。

ascii85.Decode(),不像ascii85.Encode(),具有耗盡(nsrc)的字節數和flush參數,除了字節數寫入(ndst)參數,該參數允許程序員多個塊或單個塊進行解碼片逐片。因此,可以使用小於MaxDecodedLen()的目標緩衝區。

0

我認爲,雖然編碼MaxEncodedLen()是強制性的,以知道以保持編碼輸出(即目的地緩衝器大小)所需要的字節數。
在解碼的情況下,調用者可以通過目標緩衝區的大小等於源緩衝區,儘管目標緩衝區的大小可能較小。
或者,如果編碼和解碼的執行上下文/範圍相同,我們可以使用原始來源,即簡單的非編碼緩衝區大小。因此,期望的函數MaxDecodedLen()是可選的。

+0

@thiya:最大緩衝區大小計算應考慮壓縮。 – peterSO 2010-04-29 21:03:20