我有一个 Web 表单,我想在 Base64 中为其内容生成一个简短的表示。除其他外,该表单包含 264 个二进制值的列表,其中大部分将在任何时候为 0。(它们代表地理地图上的区域)。即使在 Base64 中,这个 264 位数字也会生成一个长而令人生畏的字符串。我想尽可能高效地实现游程编码。你能帮我解决这个问题吗?我用谷歌搜索了二进制 RLE,但没有发现任何用处。
我已经尝试了这么远- 使用十进制计数和“A”作为分隔符在二进制字符串上运行 RLE,表示 0 和 1 之间的变化,然后将结果从基数 11 转换为基数 64。例如:
00000000001111111000000010000000000000000000000001111111110001111010101000000000000000000000000000000000000111111111110111000000000000111111100000001000000000000000000000000111111111000111101010100000000000000000000000000000000000011111111111011100
变成
10A5A5AA22A7A1A2AAAAAAA34A9AA1A10A5A5AA22A7A1A2AAAAAAA34A9AA1A
这反过来变成
CNnbr/FxkgbbOw0LNAKgk65P8SdvaTG+t74o
或者,以 62 为基数,
6imo7zq1pqr2mqglTHzXwJRAksm7fvHZHWQK
更好,但我仍然不禁怀疑我是否做错了什么 - 使用数字“A”作为分隔符是最好的方法吗?
另一个更新:
感谢@comingstorm,我又缩短了压缩字符串。
ILHHASCAASBYwwccDASYgAEgWDI=
正如我在评论中提到的那样,实际用例通常会导致字符串更短。