ascii85具有獲取編碼的最大長度的函數MaxEncodedLen()
。獲取解碼的長度Ascii85
我認爲它應該有一個函數來獲得解碼的長度,就像它在Base64中一樣。
http://golang.org/pkg/encoding/ascii85/
ascii85具有獲取編碼的最大長度的函數MaxEncodedLen()
。獲取解碼的長度Ascii85
我認爲它應該有一個函數來獲得解碼的長度,就像它在Base64中一樣。
http://golang.org/pkg/encoding/ascii85/
這裏有一個函數來計算Go package ascii85
MaxDecodedLen()
對於n
編碼的字節。
func MaxDecodedLen(n int) int {
const binWordLen = 4
return n * binWordLen
}
如果所有四個字節的未編碼的組都是零,它們是由一個單一的字節,字符z
表示,而不是由5個感嘆號(!!!!!
)。在一些實現中,未編碼的空格組可由單個字符y
表示。
ascii85.Decode()
,不像ascii85.Encode()
,具有耗盡(nsrc
)的字節數和flush
參數,除了字節數寫入(ndst
)參數,該參數允許程序員多個塊或單個塊進行解碼片逐片。因此,可以使用小於MaxDecodedLen()
的目標緩衝區。
我認爲,雖然編碼MaxEncodedLen()是強制性的,以知道以保持編碼輸出(即目的地緩衝器大小)所需要的字節數。
在解碼的情況下,調用者可以通過目標緩衝區的大小等於源緩衝區,儘管目標緩衝區的大小可能較小。
或者,如果編碼和解碼的執行上下文/範圍相同,我們可以使用原始來源,即簡單的非編碼緩衝區大小。因此,期望的函數MaxDecodedLen()是可選的。
@thiya:最大緩衝區大小計算應考慮壓縮。 – peterSO 2010-04-29 21:03:20