12

Преобразование символа в ASCII код в JavaScript

11

Как преобразовать символ в его ASCII-код с помощью JavaScript?

У меня есть задача, в которой нужно получить ASCII-код символа. Например, я хотел бы получить значение 10 для символа "\n" (перевод строки).

Есть ли способ сделать это в JavaScript? Спасибо!

5 ответ(ов)

0

Если у вас есть только один символ, а не строка, вы можете использовать:

'\n'.charCodeAt();
'\n'.codePointAt();

При этом ноль можно опустить...

Раньше это было значительно медленнее, чем 'n'.charCodeAt(0), но я протестировал это и теперь не вижу никаких различий (выполнил 10 миллиардов раз с и без нуля). Тестировалось только в Chrome и Firefox.

0

Хотя другие ответы верные, я предпочитаю такой способ:

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);
0

Для тех, кто хочет получить сумму всех 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)

В первом варианте мы сначала разбиваем строку на массив символов, затем преобразуем каждый символ в его ASCII код с помощью charCodeAt(0) и в конце складываем все коды с помощью reduce. Во втором варианте используется оператор распространения (...), который упрощает процесс получения массива символов из строки. Оба подхода достигают одной и той же цели.

0

Чтобы обеспечить полную поддержку Unicode и обратимость, рекомендуется использовать следующий код:

'\n'.codePointAt(0);

Это обеспечит правильное получение истинного значения кодовой точки при тестировании символов, превышающих предел UTF-16.

Например:

'𐩕'.codePointAt(0); // 68181
String.fromCodePoint(68181); // '𐩕'

'𐩕'.charCodeAt(0);  // 55298
String.fromCharCode(55298);  // ''

Важно помнить, что codePointAt возвращает значение кодовой точки символа, в то время как charCodeAt дает значение кодовой единицы UTF-16, что может привести к неоднозначным результатам для символов, представляющих кодовые точки выше 0xFFFF.

0

Для преобразования строки в массив (поток) UTF-8 в JavaScript вы можете использовать TextEncoder. Вот пример кода, который показывает, как это сделать:

const str_to_arr_of_UTF8 = new TextEncoder().encode("Adfgdfs");
// Результат: Uint8Array [65, 100, 102, 103, 100, 102, 115]

Важно отметить, что ASCII является подмножеством UTF-8, поэтому это решение будет универсальным для строк, состоящих из ASCII-символов. При использовании этого метода, вы получаете Uint8Array, где каждый элемент представляет собой байт, который соответствует символу в строке.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь