那一坨通缉令的照片~

之前看到有朋友发了“输入名字就能生成通缉令”的图片,作为一个富有学习意识的人,我们要充分挖掘这个东西背后的内涵……以下是研究过程:

Step 1:输入0~20,查看它们所对应的图片,发现11和20是一样的!

Step 2:输入字母A,发现A和11、20也是一样的,有什么联系呢?

Step 3:输入字母a,没发现什么,但是发现字母b和A、11、20也都是一样的!

Step 4:朋友那张输入的名字是“Echo Peng”,我又打了“Pen gEcho”,结果是一样的,也就是说和顺序无关!

猜想:ASCII码逐位相加!

为什么呐? 因为大家来看:在ASCII码中ASC(b)=98,ASC(0)+ASC(2)=98,ASC(1)+ASC(1)=98。

但是ASC(A)=65,这是为什么呢?因为它没有那么多图片!所以要再加上一个条件:取模!

假设模为K,因为98=65(mod K),所以33=0(mod K),因此K有以下可能:1、3(难道只有这么点图么?不可能的啦~)、11(这个还是有可能的,不过貌似不止这些吧?)、33。

综上,一共有33张图片循环出现,如果你输入的全是英文(包括英文标点、空格、占位符(如果你有本事输的话……)),那么就是逐位求ASCII码,然后相加,然后mod 33。

========================================

接下来看中文!

汉字 “一”的ASC码是-11589(其实是因为第一位是1被认为是负的……),但是检验下来跟上面的公式对不上……难道是公式不对吗?

错!那是因为,这种即时处理并反馈的网页用的永远是JAVASCRIPT代码,而JAVASCRIPT对于中文不是用ASC码,而是用UNICODE码,而英文字符的UNICODE码与ASCII码是一样的!

汉字“一”的UNICODE码是19968,和字母f的UNICODE码102模33同余,两个输进去出来的都是“猥琐的摄像师”,所以那个公式没错,只不过不应该用ASCII码,而应该用UNICODE码。

=========================================

综上所述,这个网页活动用的代码基本内容就是:

计算你输的每一个字符的UNICODE码,相加,然后输出mod 33后的值。

我们只需要搞清0~32对应哪张图片,然后自己就可以查着UNICODE码确认某一个名字对应哪一张通缉令啦!


(2011.01.22 @ 人人 @ 杂记J–那一坨通缉令的照片~)

阅读 · 译介 · 创作