我有一个网页表单,我想生成一个Base64的短表示。该表单包含264个二进制值的列表,其中大部分在任何单个时刻都将为0(它们代表地理地图上的区域)。即使是在Base64中,这264位数字也会生成一个长而令人生畏的字符串。我希望尽可能高效地实现游程编码。你能帮我吗?我已经在谷歌上搜索了二进制RLE,但没有找到有用的结果。
目前为止我尝试过的方法是使用十进制计数和"A"作为分隔符来运行RLE,表示0和1之间的变化,然后将结果从11进制转换为64进制。例如:
目前为止我尝试过的方法是使用十进制计数和"A"作为分隔符来运行RLE,表示0和1之间的变化,然后将结果从11进制转换为64进制。例如:
00000000001111111000000010000000000000000000000001111111110001111010101000000000000000000000000000000000000111111111110111000000000000111111100000001000000000000000000000000111111111000111101010100000000000000000000000000000000000011111111111011100
变成
10A5A5AA22A7A1A2AAAAAAA34A9AA1A10A5A5AA22A7A1A2AAAAAAA34A9AA1A
转而成为
CNnbr/FxkgbbOw0LNAKgk65P8SdvaTG+t74o
或者,在62进制中,
6imo7zq1pqr2mqglTHzXwJRAksm7fvHZHWQK
虽然现在更好了,但我仍然怀疑自己是否有做错什么——使用数字"A"作为分隔符是否是最好的方法?
另外一个更新:
感谢@comingstorm,我已经进一步缩短了压缩字符串。
ILHHASCAASBYwwccDASYgAEgWDI=
如我在评论中所提到的,实际使用情况通常会导致更短的字符串。