Question

ASCII85 a une fonction pour obtenir la longueur maximale d'un codage MaxEncodedLen().

Je pense qu'il devrait avoir aussi une fonction pour obtenir la longueur au décodage comme il a en base64.

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

Était-ce utile?

La solution

Voici une fonction pour calculer Go package ascii85 MaxDecodedLen() pour les octets codés n.

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

Si les quatre octets d'un groupe non codés sont nuls, ils sont représentés par un seul octet, le z de caractère, au lieu de cinq points d'exclamation (de !!!!!). Dans certaines implémentations, un groupe non codé des espaces peut être représenté par le y de caractère.

ascii85.Decode(), contrairement à ascii85.Encode(), a nombre d'octets consommée (nsrc) et les paramètres de flush, en plus d'un certain nombre d'octets écrits paramètre (ndst), qui permet au programmeur de décoder de multiples blocs ou un morceau par morceau seul bloc . Par conséquent, un tampon de destination inférieure à la MaxDecodedLen() peut être utilisé.

Autres conseils

A mon avis, lors du codage des MaxEncodedLen () est obligatoire de connaître le nombre d'octets requis pour maintenir la sortie encodée (à savoir la taille de la mémoire tampon de destination).
Où en cas de décodage, l'appelant peut transmettre la mémoire tampon de destination de taille égale au tampon source si le tampon de destination peut être moindre taille.
Sinon, nous pouvons utiliser la source d'origine-à-dire simplement la taille de la mémoire tampon non codé, si le contexte d'exécution / portée de codage et de décodage sont identiques. D'où la fonction attendue, MaxDecodedLen () est facultative.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top