Base64で短い表現を生成したいコンテンツのWebフォームがあります。このフォームには、特に264個のバイナリ値のリストが含まれています。その大部分はいつでも0になります。(地理マップ上の地域を表します)。Base64でも、この264ビットの数値は長くて威圧的な文字列を生成します。可能な限り効率的にランレングスエンコーディングを実装したいと思います。これを手伝ってくれませんか。バイナリRLEをグーグルで検索しましたが、何の役にも立ちません。
私がこれまでに試したことは、10進数のカウントと0と1の間の変化を示す区切り文字として「A」を使用してバイナリ文字列でRLEを実行し、結果をbase11からbase64に変換することです。例:
00000000001111111000000010000000000000000000000001111111110001111010101000000000000000000000000000000000000111111111110111000000000000111111100000001000000000000000000000000111111111000111101010100000000000000000000000000000000000011111111111011100
になります
10A5A5AA22A7A1A2AAAAAAA34A9AA1A10A5A5AA22A7A1A2AAAAAAA34A9AA1A
これは次のようになります
CNnbr/FxkgbbOw0LNAKgk65P8SdvaTG+t74o
または、ベース62では、
6imo7zq1pqr2mqglTHzXwJRAksm7fvHZHWQK
それは良いことですが、それでも私が何か間違ったことをしているのかどうか疑問に思うしかありません-数字「A」を区切り文字として使用するのがこれを行うための最良の方法ですか?
そして別の更新:
@comingstormのおかげで、圧縮された文字列をもう少し短くしました。
ILHHASCAASBYwwccDASYgAEgWDI=
コメントで述べたように、実際の使用例では、通常、文字列がさらに短くなります。