需要解释一些神奇的数字

时间:2015-01-20 14:48:15

标签: javascript function char

我在互联网上找到了这段代码

var b = '12-0-17-2-4-11-14';
var xxx = b.split('-').map(function (x) {
  var x = Number(x); 
  return String.fromCharCode(x < 26 ? 97 + x : 39 + x);
}).join('');
console.log(xxx);

感:

0 = "a";
b = "1";
c = "2";
d = "3";

此代码的输出将是&#39; Marcelo&#39;,原因

12 = "M", 0 = "a",  17 = "r", 2 = "c", 4 = "e", 11 = "l", 14 = "o";

我理解直到将所有字符串转换为数字,但剩下的就是我不能捕捉

fromCharCode (x < 26 ? 97 + x : 39 + x)正在做什么?这段代码负责将数字与字母表匹配。

有人可以解释一下吗?

3 个答案:

答案 0 :(得分:2)

fromCharCode中的少量计算用于将零索引字母(0:a,1:b,...25:z,26:A...)映射到其正确的字符代码:

&#13;
&#13;
var output = '';

for(var i = 0; i < 52; i++){
    output += String.fromCharCode(i < 26 ? 97 + i : 39 + i);
}
alert(output);
&#13;
&#13;
&#13;

如您所见:enter image description here 密码65-90A-Z97-122a-z

因此,字母表的前半部分(x < 26)已将97添加到其索引中,而后半部分(x >= 26)则{{1}已添加,即65-26

答案 1 :(得分:1)

(x < 26 ? 97 + x : 39 + x) 

只是计算从数字中形成字母表。

如果x的值(即字符串中的每个数字)小于26,那么如果可以映射到字母表(字母表是26对吗?),则返回该字母表的字符代码,否则返回charcode为大写字母

答案 2 :(得分:0)

它将数字转换为ASCII表示。

'A'char有65个十进制值,'a'char有97个十进制值。

您可以在此处查看ASCII表:http://www.asciitable.com/