如何将长串数字转换为短字符串?

时间:2012-04-30 21:16:08

标签: javascript compression

我正在构建一个网格,其中每个框使用HTML和&的JavaScript。

示例:一个5x5网格,其中我有25个值可以跟踪。我希望能够通过“网格”发送网格信息。参数因此,当任何用户想要查看此特定网格时,他们会看到完全绘制的网格。最初,URL将是:www.mysite.com?grid = 0123401234012340123401234理想情况下,参数将小于25个字符。

我将如何转换' 0123401234012340123401234'一个较小的字符串?最好使用压缩算法还是仅使用十进制到十六进制转换?

2 个答案:

答案 0 :(得分:0)

你可以使用更高的基数。像30这样的东西,例如:(123401234012340123401234).toString(30) --> "8i015nb02ib0c4ik"。请注意,要使其正常工作,123401234012340123401234必须是数字而不是字符串。

答案 1 :(得分:0)

如果每个单元格包含一种颜色,则表示每个单元格需要3个字节(如果包含Alpha通道中的更改,则为4个字节)。这意味着如果您使用十六进制编码,则每个单元格需要6个十六进制字符。

这不是最佳选择,因此我建议使用等于a-zA-Z0-9个字符的26 + 26 + 10 = 62。然后使用两个字符 - 和_来获得完整的64个字符。使用十六进制,您需要6个字符来编码2 ^(24)个可能的值(如果使用alpha通道,则需要2 ^ 32)。

对于64个基本字符,每个单元格只需要4个字符。我提到这个的原因是因为a-zA-Z0-9 - 和_是有效的网址字符。

所有这一切都假设您使用的是所有颜色。如果限制域,则可以大幅减少每个单元的字符数,但仍应使用相同的编码方案。