如何使用JavaScript将字符转换为ASCII码?

例如:

从“\n”中得到10。


当前回答

对于那些想要获得字符串的所有ASCII码的和的人:

'Foobar'
  .split('')
  .map(char => char.charCodeAt(0))
  .reduce((current, previous) => previous + current)

或者,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

对于那些想要获取字符串中所有ASCII码的平均值的人:

const ASCIIAverage = (str) =>Math.floor(str.split("))。map(item => item. charcodeat (0)).reduce((prev,next) => prev+next)/str.length) console.log (ASCIIAverage(“Hello World !”)

为了支持来自ES6的所有UTF-16(也非bmp /补充字符),string.codePointAt()方法可用;

此方法是charCodeAt的改进版本,它只支持< 65536(216 -单个16位)的unicode码点。

charCodeAt(0);

以上代码在大多数情况下都可以工作,但是在使用单词查找基于上述代码的排名时存在一个问题。例如,aa会给出97+97 = 194(实际会是1+1 = 2),而w会给出119(实际会是23),这使得aa > w。 要解决这个问题,从上面的结果减去96,从1开始定位。

字符代码(0) - 96;

str.charCodeAt(index)

使用charCodeAt () 下面的示例返回A的Unicode值65。

'ABC'.charCodeAt(0) //返回65