经过证实,lichd 的观点正确,由于我在本文发表之前,除Base64 之外,其他的BaseXX 都没接触过,所以不知道这个正是Base32 的效果。
不 过看官们请放心,本文的思路也和Base32 符合。但码表有所变化。当时的乱打乱撞,结果造了一个古人已经造好的轮子,实在惭愧。
因此,感谢lichd 的观点,从而稀释了我体内SB细胞的浓度。
回头看了一下本文的一个旧实现(codec.zip ), 一年前写得代码太糟糕了,不推荐。
现在提供一个相对不错的实现,>> 猛击获取<< 。
-------------------------- -------------------------- -------------------- ---------------------
------------------------------------------ 分割线 --------------------------------------------
-------------------------- -------------------------- -------------------- ---------------------
继“淘宝网的搜索关键字的编码与解码 ”之后,忽然间,脑袋一闪:“好像拍拍网对于搜索关键字的编码与解码的规则都是差不多的”。
然后马上跑去拍拍网,敲入:“gembler”,得出如下URL:
http://sse.paipai.com/s-p7vz42wppy3a--1-40-13---3-4-3----2-2--128-0.html
(看上面的:p7vz42wppy3a )
是不是与淘宝网的长的差不多阿?答案是:“确实长的很像”。
大战300个回合中...
既然长得像,那么游戏规则应该也是大同小异。。。
分析、研究完了,有结论了:
其实,就只有码表不一样,其他的,全都跟“淘宝网的搜索关键字的编码与解码 ”一样,OK!我们来看看码表的变化。
在上文 中用的码表是由: [ a-z , 2-7 ] 组成的。
而现在,是由: [ a-c , g-z , 1-9 ] 组成的。
oh! gee · ·· 就多了 [1 , 8 , 9 ] ,然后干掉了 [ d-f ] 。
上文的码表:
private final static String CODEC_TABLE = "abcdefghijklmnopqrstuvwxyz234567";
a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
-------------------------------愚蠢分割线---------------------------------
s | t | u | v | w | x | y | z | 2 | 3 | 4 | 5 | 6 | 7 |
18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
现在的码表:
private final static String CODEC_TABLE = "abcghijklmnopqrstuvwxyz123456789";
a |
b |
c |
g |
h |
i |
j |
k |
l |
m |
n |
o |
p |
q |
r |
s |
t |
u |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
-------------------------------愚蠢分割线---------------------------------
v |
w |
x |
y |
z |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
OK!测试一下,这里使用上文 提供的 Source Code 中的 main(String[] args) 来测试:
测试结果:
输入:JavaEye论坛频道
输出:
original: JavaEye论坛频道
encode: mmt1p2nisiv6iz8pzsgooqra
decode: JavaEye论坛频道
然后跑去拍拍网敲入"JavaEye论坛频道 "搜索。
得出:
http://sse.paipai.com/s-mmt1p2nisiv6iz8pzsgooqra --1-40-13---3-4-3----2-2--128-0.html
比较一下:
mmt1p2nisiv6iz8pzsgooqra - console输出
mmt1p2nisiv6iz8pzsgooqra - 拍拍网URL
说明两点:
1.其实这种规则只是在Base64上进行改造,不是原始的Base64。
2.可能这两个贴子出了以后,淘宝网和拍拍网的那个规则可能会有所变动,
所以以后拿着我上文 提供的Source Code去执行的结果,跟他们俩比较,不一定会准确。
对Source Code有兴趣的Javaeyer们,可以点击下载 ,又或者到“淘宝网的搜索关键字的编码与解码 ”里下载。
PS:这是个人观点,如与拍拍网的相符,纯粹巧合
完事了······(腰酸背疼ing...)