Domanda

ASCII85 ha una funzione per ottenere la lunghezza massima di un MaxEncodedLen() codifica.

penso che dovrebbe avere anche una funzione per ottenere la lunghezza alla decodifica come esso ha in Base64.

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

È stato utile?

Soluzione

Ecco una funzione per calcolare Go package ascii85 MaxDecodedLen() per n codificato byte.

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

Se tutti i quattro byte di un gruppo non codificato sono pari a zero, essi sono rappresentati da un singolo byte, il carattere z, invece di cinque punti esclamativi (!!!!!). In alcune implementazioni, un gruppo non codificato degli spazi può essere rappresentato dal singolo y carattere.

ascii85.Decode(), a differenza ascii85.Encode(), ha un numero di byte consumati (nsrc) e parametri flush, oltre ad un numero di byte scritti parametro (ndst), che permette al programmatore di decodificare più blocchi o un singolo blocco pezzo per pezzo . Pertanto, può essere utilizzato un buffer di destinazione inferiore alla MaxDecodedLen().

Altri suggerimenti

Ritengo, codificando la MaxEncodedLen () è obbligatorio per conoscere il numero di byte richiesto per mantenere l'uscita codificato (cioè destinazione dimensione del buffer).
Dove in caso di decodifica, il chiamante può passare il buffer di destinazione di dimensioni pari buffer di origine se il buffer di destinazione può essere minore grandezza.
In alternativa si può usare la sorgente originale cioè normale formato non codificato tampone, se il contesto di esecuzione / portata di codifica e decodifica sono gli stessi. Da qui la funzione prevista, MaxDecodedLen () è facoltativo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top