Binaire de longueur de course de l'encodage

J'ai un formulaire web pour le contenu de qui je voudrais générer une représentation courte en Base64. La forme, entre autres choses, contient une liste de 264 valeurs binaires, la plus grande partie de ce qui va être de 0 à tout moment unique. (Ils représentent des régions sur une carte géographique). Même en Base64, ce 264-nombre de bits génère un long, intimidant chaîne. Je veux mettre en œuvre run-length encoding, aussi efficacement que possible. Pouvez-vous m'aider? J'ai googlé binaire RLE, mais n'ai rien trouvé d'utilisation.

Ce que j'ai essayé jusqu'ici - l'exécution de RLE sur la chaîne binaire décimal à l'aide de comptages et les "A" comme séparateur dénotant un changement entre 0 et 1, puis en convertissant le résultat à partir de la base de 11 à base 64. Par exemple:

00000000001111111000000010000000000000000000000001111111110001111010101000000000000000000000000000000000000111111111110111000000000000111111100000001000000000000000000000000111111111000111101010100000000000000000000000000000000000011111111111011100

devient

10A5A5AA22A7A1A2AAAAAAA34A9AA1A10A5A5AA22A7A1A2AAAAAAA34A9AA1A

qui devient à son tour

CNnbr/FxkgbbOw0LNAKgk65P8SdvaTG+t74o

ou, dans la base de 62,

6imo7zq1pqr2mqglTHzXwJRAksm7fvHZHWQK

C'est mieux, mais je ne peux pas aider mais le doute si je fais quelque chose de mal, utilise le chiffre "Un" comme séparateur est la meilleure façon de le faire?

Et une autre mise à jour:

Grâce à @comingstorm, j'ai raccourci le comprimé de chaîne un peu plus.

ILHHASCAASBYwwccDASYgAEgWDI=

Comme je l'ai mentionné dans les commentaires, véritable cas d'utilisation entraînera généralement dans une même chaîne plus courte.

OriginalL'auteur avramov | 2011-09-29