Другое

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

Узнайте, как преобразовывать символы в коды ASCII в JavaScript с помощью методов charCodeAt() и codePointAt(). Полное руководство с примерами для стандартных и Unicode-символов.

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

Например:

  • Получить 10 из “\n”.

Основной способ преобразования символа в его ASCII-код в JavaScript - использование метода charCodeAt(), который возвращает UTF-16 кодовую единицу по указанному индексу. Для символа новой строки "\n" этот метод возвращает 10, что является его ASCII-значением. Хотя charCodeAt() отлично работает со стандартными ASCII-символами (0-127), для обработки символов Unicode вне Базовой многоязычной плоскости может потребоваться метод codePointAt().

Содержание

Использование метода charCodeAt()

Метод charCodeAt() - это самый простой способ преобразования символа в его ASCII-код в JavaScript. Этот метод возвращает UTF-16 кодовую единицу по заданному индексу в строке.

javascript
// Базовое использование
const char = 'A';
const asciiCode = char.charCodeAt(0);
console.log(asciiCode); // Вывод: 65

// Пример с символом новой строки
const newline = "\n";
const newlineCode = newline.charCodeAt(0);
console.log(newlineCode); // Вывод: 10

Основные характеристики:

  • Возвращает целое число от 0 до 65535
  • Первые 128 кодовых точек Unicode (0 до 127) соответствуют набору символов ASCII
  • Работает с любой допустимой строкой и индексом

Вот несколько распространенных преобразований ASCII:

javascript
console.log('A'.charCodeAt(0));  // 65
console.log('a'.charCodeAt(0));  // 97
console.log('0'.charCodeAt(0));  // 48
console.log(' '.charCodeAt(0));  // 32
console.log('!'.charCodeAt(0));  // 33

Вы также можете создать повторно используемую функцию для преобразования любого символа:

javascript
function charToAscii(char) {
    return char.charCodeAt(0);
}

// Примеры использования
console.log(charToAscii('A'));   // 65
console.log(charToAscii('\n'));  // 10
console.log(charToAscii('z'));   // 122

Использование метода codePointAt()

Для символов вне Базовой многоязычной плоскости (BMP) метод charCodeAt() может не вернуть правильную кодовую точку Unicode. В таких случаях следует использовать метод codePointAt().

javascript
// Пример с суррогатной парой (символ вне BMP)
const emoji = '😊';
console.log(emoji.charCodeAt(0));        // 55357 (первый суррогат)
console.log(emoji.charCodeAt(1));        // 56842 (второй суррогат)
console.log(emoji.codePointAt(0));       // 128522 (фактическая кодовая точка Unicode)

Когда использовать codePointAt():

  • Обработка эмодзи и других символов Unicode за пределами BMP
  • Когда нужна фактическая кодовая точка Unicode, а не UTF-16 кодовые единицы
  • Работа с символами, требующими суррогатных пар

Как объясняется на Mozilla Developer Network, метод charCodeAt() возвращает отдельные UTF-16 кодовые единицы, которые для символов вне BMP сами по себе могут не представлять допустимые символы Unicode.

Обработка специальных символов

JavaScript предоставляет несколько специальных символов с известными ASCII-кодами:

javascript
// Управляющие символы
console.log('\n'.charCodeAt(0));   // 10 (Перевод строки)
console.log('\r'.charCodeAt(0));   // 13 (Возврат каретки)
console.log('\t'.charCodeAt(0));   // 9 (Табуляция)
console.log('\b'.charCodeAt(0));   // 8 (Возврат на один символ)

// Символы пробела
console.log(' '.charCodeAt(0));    // 32 (Пробел)
console.log('\v'.charCodeAt(0));   // 11 (Вертикальная табуляция)
console.log('\f'.charCodeAt(0));   // 12 (Перевод страницы)

// Знаки препинания и символы
console.log('!'.charCodeAt(0));    // 33
console.log('"'.charCodeAt(0));    // 34
console.log('#'.charCodeAt(0));    // 35
console.log('$'.charCodeAt(0));    // 36

Согласно Techie Delight, первые 128 кодовых точек Unicode (0 до 127) соответствуют набору символов ASCII, что делает эти преобразования простыми и последовательными.

Полные примеры преобразования

Вот комплексные примеры, демонстрирующие различные подходы к преобразованию символов в ASCII:

Базовая обработка строк

javascript
// Преобразование всей строки в ASCII-коды
function stringToAscii(str) {
    return str.split('').map(char => char.charCodeAt(0));
}

console.log(stringToAscii('Hello')); // [72, 101, 108, 108, 111]

Сопоставление ASCII-кода с символом

javascript
// Создание объекта, сопоставляющего символы с их ASCII-кодами
const createAsciiMap = (str) => {
    return str.split('').reduce((acc, char, index) => {
        acc[char] = str.charCodeAt(index);
        return acc;
    }, {});
};

const asciiMap = createAsciiMap('ABC');
console.log(asciiMap); // {A: 65, B: 66, C: 67}

Функция с обработкой ошибок

javascript
// Надежная функция с обработкой ошибок
function safeCharToAscii(char) {
    if (typeof char !== 'string' || char.length === 0) {
        throw new Error('Входные данные должны быть непустой строкой');
    }
    return char.charCodeAt(0);
}

// Использование
try {
    console.log(safeCharToAscii('A'));    // 65
    console.log(safeCharToAscii('\n'));   // 10
    console.log(safeCharToAscii(''));     // Ошибка
} catch (error) {
    console.error(error.message);
}

Пример пакетной обработки

javascript
// Обработка нескольких символов одновременно
const batchCharToAscii = (chars) => {
    return chars.map(char => ({
        character: char,
        ascii: char.charCodeAt(0)
    }));
};

const results = batchCharToAscii(['A', 'a', '0', '\n', ' ']);
console.log(results);
/*
[
    { character: 'A', ascii: 65 },
    { character: 'a', ascii: 97 },
    { character: '0', ascii: 48 },
    { character: '\n', ascii: 10 },
    { character: ' ', ascii: 32 }
]
*/

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

Иногда требуется преобразовать ASCII-коды обратно в символы. Для этой цели JavaScript предоставляет метод String.fromCharCode():

javascript
// Преобразование ASCII-кода в символ
console.log(String.fromCharCode(65));   // 'A'
console.log(String.fromCharCode(97));   // 'a'
console.log(String.fromCharCode(48));   // '0'
console.log(String.fromCharCode(10));   // '\n' (новая строка)
console.log(String.fromCharCode(32));   // ' ' (пробел)

// Преобразование нескольких ASCII-кодов в строку
function asciiToString(asciiArray) {
    return asciiArray.map(code => String.fromCharCode(code)).join('');
}

console.log(asciiToString([72, 101, 108, 108, 111])); // "Hello"

Для символов Unicode за пределами BMP можно использовать String.fromCodePoint():

javascript
// Преобразование кодовой точки Unicode в символ
console.log(String.fromCodePoint(128522)); // '😊'
console.log(String.fromCodePoint(68181));  // '𐩕'

Заключение

Преобразование символов в ASCII-коды в JavaScript с использованием метода charCodeAt() является простым процессом, который предоставляет UTF-16 кодовую единицу по любому заданному индексу. Для конкретного примера преобразования символа новой строки "\n" просто используйте "\n".charCodeAt(0), который возвращает 10.

Основные выводы:

  • Используйте charCodeAt() для стандартных преобразований ASCII (0-127)
  • Используйте codePointAt() для символов Unicode за пределами Базовой многоязычной плоскости
  • String.fromCharCode() преобразует ASCII-коды обратно в символы
  • Первые 128 кодовых точек Unicode точно соответствуют значениям ASCII
  • Обрабатывайте специальные символы, такие как "\n" (10), "\r" (13) и "\t" (9), используя их известные ASCII-значения

В большинстве сценариев разработки, связанных со стандартными символами и обработкой текста, charCodeAt() будет вашим основным методом для преобразования символов в ASCII в JavaScript.

Источники

  1. Преобразование символа в ASCII-код в JavaScript - Stack Overflow
  2. String.prototype.charCodeAt() - JavaScript | MDN
  3. Как преобразовать символы в ASCII-код с помощью JavaScript - Tutorialspoint
  4. Преобразование символа в его ASCII-код в JavaScript - Techie Delight
  5. JavaScript: преобразование символа в ASCII и обратно - Java Code Geeks
  6. Метод String charCodeAt() JavaScript - W3Schools
Авторы
Проверено модерацией
Модерация