У меня есть веб-форма, для содержимого которой я хотел бы сгенерировать краткое представление в Base64. Форма, помимо прочего, содержит список из 264 двоичных значений, большая часть которых будет равна 0 в любой момент времени. (Они представляют регионы на географической карте). Даже в Base64 это 264-битное число создает длинную устрашающую строку. Я хочу реализовать кодирование длин серий как можно более эффективно. ты можешь помочь мне с этим? Я погуглил двоичный RLE, но не нашел ничего полезного.
То, что я пробовал до сих пор - запуск RLE для двоичной строки с использованием десятичных чисел и «A» в качестве разделителя, обозначающего изменение между 0 и 1, а затем преобразование результата из базы 11 в базу 64. Для пример:
00000000001111111000000010000000000000000000000001111111110001111010101000000000000000000000000000000000000111111111110111000000000000111111100000001000000000000000000000000111111111000111101010100000000000000000000000000000000000011111111111011100
становится
10A5A5AA22A7A1A2AAAAAAA34A9AA1A10A5A5AA22A7A1A2AAAAAAA34A9AA1A
, что, в свою очередь, становится
CNnbr/FxkgbbOw0LNAKgk65P8SdvaTG+t74o
или, в базе 62,
6imo7zq1pqr2mqglTHzXwJRAksm7fvHZHWQK
Это лучше, но я все еще не могу не сомневаться, что я делаю что-то не так - это цифра " Лучше всего это сделать с помощью разделителя?
И еще одно обновление:
Благодаря @comingstorm я еще немного сократил сжатую строку.
ILHHASCAASBYwwccDASYgAEgWDI=
Как я уже упоминал в комментариях, реальные варианты использования обычно приводят к еще более короткой строке.