在JavaScript中将字符转换为ASCII代码

Convert character to ASCII code in JavaScript

如何使用javascript将字符转换为其ASCII代码?

例如:

get 10 from"
".


1
2
"
"
.charCodeAt(0);


String.prototype.charCodeAt()可以将字符串字符转换为ASCII数字。例如:

1
"ABC".charCodeAt(0) // returns 65

相反,使用String.fromCharCode(10)将数字转换为相等的ASCII字符。此函数可以接受多个数字,并连接所有字符,然后返回字符串。例子:

1
String.fromCharCode(65,66,67); // returns 'ABC'

以下是一个快速的ASCII字符参考:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{
"31":"",     "32":"",    "33":"!",    "34":""",   "35":"#",    
"
36":"$",    "37":"%",    "38":"&",    "39":"'",    "40":"(",    
"41":")",    "42":"*",    "43":"+",    "44":",",    "45":"-",    
"46":".",    "47":"/",    "48":"0",    "49":"1",    "50":"2",    
"51":"3",    "52":"4",    "53":"5",    "54":"6",    "55":"7",    
"56":"8",    "57":"9",    "58":":",    "59":";",    "60":"<",    
"61":"=",    "62":">",    "63":"?",    "64":"@",    "65":"A",    
"66":"B",    "67":"C",    "68":"D",    "69":"E",    "70":"F",    
"71":"G",    "72":"H",    "73":"I",    "74":"J",    "75":"K",    
"76":"L",    "77":"M",    "78":"N",    "79":"O",    "80":"P",    
"81":"Q",    "82":"R",    "83":"S",    "84":"T",    "85":"U",    
"86":"V",    "87":"W",    "88":"X",    "89":"Y",    "90":"Z",    
"91":"[",    "92":"\",   "93":"]",    "94":"^",    "95":"_",    
"96":"`",    "97":"a",    "98":"b",    "99":"c",    "100":"d",    
"101":"e",   "102":"f",   "103":"g",   "104":"h",   "105":"i",    
"106":"j",   "107":"k",   "108":"l",   "109":"m",   "110":"n",    
"111":"o",   "112":"p",   "113":"q",   "114":"r",   "115":"s",    
"116":"t",   "117":"u",   "118":"v",   "119":"w",   "120":"x",    
"121":"y",   "122":"z",   "123":"{",   "124":"|",   "125":"}",    
"126":"~",   "127":""
}


如果只有一个字符而不是字符串,则可以使用:

1
2
'
'
.charCodeAt();

省略0…

不过速度慢了。与当前版本的Chrome相比,它慢了5倍。


虽然其他答案是正确的,但我更喜欢这样:

1
function ascii (a) { return a.charCodeAt(0); }

然后,要使用它,只需:

1
2
var lineBreak = ascii("
"
);

我用这个做一个小的快捷系统:

1
2
3
4
5
6
$(window).keypress(function(event) {
  if (event.ctrlKey && event.which == ascii("s")) {
    savecontent();
    }
  // ...
  });

甚至可以在map()或其他方法中使用它:

1
var ints = 'ergtrer'.split('').map(ascii);


对于那些想要得到一个字符串的所有ASCII代码的总和的用户:

1
2
3
4
5
6
7
8
'Foobar'
  .split('')
  .map(function (char) {
    return char.charCodeAt(0);
  })
  .reduce(function (current, previous) {
    return previous + current;
  });

或者,ES6:

1
2
3
[...'Foobar']
  .map(char => char.charCodeAt(0))
  .reduce((current, previous) => previous + current)


javascript将字符串存储为UTF-16(双字节),因此如果您想忽略第二个字节,只需在0000000011111111上使用按位&操作符将其去掉(即255):

1
2
3
'a'.charCodeAt(0) & 255 === 97; // because 'a' = 97 0
'b'.charCodeAt(0) & 255 === 98; // because 'b' = 98 0
'?'.charCodeAt(0) & 255 === 19; // because '?' = 19 39


您可以使用此代码输入字符并获取ASCII代码

例如,输入一个类似你得到ASCII码65

1
2
3
4
5
6
7
8
9
function myFunction(){
    var str=document.getElementById("id1");
    if (str.value=="") {
       str.focus();
       return;
    }
    var a="ASCII Code is == > ";
document.getElementById("demo").innerHTML =a+str.value.charCodeAt(0);
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<p>
Check ASCII code
</p>

<p>

  Enter any character:  
  <input type="text" id="id1" name="text1" maxLength="1">   </br>

</p>

<button onclick="myFunction()">Get ASCII code</button>

<p id="demo" style="color:red;">
</p>


为了支持ES6中的所有UTF-16(也是非BMP/补充字符),可以使用string.codepointat()方法;

此方法是charcodeat的改进版本,它只支持小于65536(216-单个16位)的Unicode码点。


可以使用for循环获取所有可打印的ASCII字符的列表。

1
2
3
4
5
for(var i = 33; i < 127; i++){
    document.write("<p>
"
+i +":" + String.fromCharCode(i)+"
</p>"
);
}