如何使用JavaScript将字符转换为ASCII码?
例如:
从"\n"获得10.
Jim.. 1384
"\n".charCodeAt(0);
与此相反的是`String.fromCharCode(10)`. (622认同)
有趣的事实:你真的不需要`0`(第一个参数值) - 只需``\n".charCodeAt()`就可以了. (176认同)
@MathiasBynens:幸运的是,这是记录的:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/charCodeAt."如果它不是数字,则默认为0" (45认同)
@Mathias Bynens,它当然默认为零,但我刚刚对性能进行了一次兴趣测试,与使用0相比,它的表现相对较差.http://jsperf.com/default-to-0-vs-0/4**它只是一个相对的差异,无论哪种方式非常快. (26认同)
你应该指出,与`String.fromCharCode(asciiNumVal)`不同,`stringInstance.charCodeAt(index)`是__not__类String的静态方法 (11认同)
我认为指定索引而不是将其保留为默认值更清晰(可读性更明智)......但无论如何它都是次要的 (4认同)
@wademontague我从没想过要对它进行性能测试。太荒谬了!感谢您的结果。 (2认同)
@MathiasBynens`没有参数的charCodeAt()`没什么意义 (2认同)
Mohsen.. 363
String.prototype.charCodeAt()
可以将字符串字符转换为ASCII数字.例如:
"ABC".charCodeAt(0) // returns 65
对于String.fromCharCode(10)
将数字转换为等于ASCII字符的相反用途.此函数可以接受多个数字并连接所有字符然后返回字符串.例:
String.fromCharCode(65,66,67); // returns 'ABC'
这是一个快速的ASCII字符参考:
{ "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": "" }
更好的ascii参考:http://en.wikipedia.org/wiki/ASCII - 我很自豪我在该页面上的表格所做的着色在将近10年之后仍然存在:) (29认同)
@theGrayFox`C:\> man ascii`给出"错误的命令或文件名" (9认同)
@ ring0我很确定Windows没有联机帮助页? (9认同)
Marco Altier.. 29
如果您只有一个字符而不是字符串,则可以使用:
'\n'.charCodeAt();
省略0 ...
虽然它慢了.使用当前版本的chrome,它慢了5倍.
"\n".charCodeAt(0);
String.prototype.charCodeAt()
可以将字符串字符转换为ASCII数字.例如:
"ABC".charCodeAt(0) // returns 65
对于String.fromCharCode(10)
将数字转换为等于ASCII字符的相反用途.此函数可以接受多个数字并连接所有字符然后返回字符串.例:
String.fromCharCode(65,66,67); // returns 'ABC'
这是一个快速的ASCII字符参考:
{ "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": "" }
如果您只有一个字符而不是字符串,则可以使用:
'\n'.charCodeAt();
省略0 ...
虽然它慢了.使用当前版本的chrome,它慢了5倍.
虽然其他答案是对的,但我更喜欢这种方式:
function ascii (a) { return a.charCodeAt(0); }
然后,使用它,只需:
var lineBreak = ascii("\n");
我用它来做一个小的快捷方式系统:
$(window).keypress(function(event) { if (event.ctrlKey && event.which == ascii("s")) { savecontent(); } // ... });
你甚至可以在map()或其他方法中使用它:
var ints = 'ergtrer'.split('').map(ascii);
对于那些想要获得字符串的所有ASCII代码的总和的人:
'Foobar' .split('') .map(x=>x.charCodeAt(0)) .reduce((a,b)=>a+b);
或者,ES6:
[...'Foobar'] .map(char => char.charCodeAt(0)) .reduce((current, previous) => previous + current)
JavaScript将字符串存储为UTF-16
(双字节),因此如果要忽略第二个字节,只需使用按位运算&
符0000000011111111
(即255)将其删除:
'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