Полное руководство: преобразование символа в 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()
- Использование метода codePointAt()
- Обработка специальных символов
- Полные примеры преобразования
- Преобразование ASCII в символ
Использование метода charCodeAt()
Метод charCodeAt() - это самый простой способ преобразования символа в его ASCII-код в JavaScript. Этот метод возвращает UTF-16 кодовую единицу по заданному индексу в строке.
// Базовое использование
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:
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
Вы также можете создать повторно используемую функцию для преобразования любого символа:
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().
// Пример с суррогатной парой (символ вне 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-кодами:
// Управляющие символы
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:
Базовая обработка строк
// Преобразование всей строки в ASCII-коды
function stringToAscii(str) {
return str.split('').map(char => char.charCodeAt(0));
}
console.log(stringToAscii('Hello')); // [72, 101, 108, 108, 111]
Сопоставление ASCII-кода с символом
// Создание объекта, сопоставляющего символы с их 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}
Функция с обработкой ошибок
// Надежная функция с обработкой ошибок
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);
}
Пример пакетной обработки
// Обработка нескольких символов одновременно
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():
// Преобразование 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():
// Преобразование кодовой точки 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.
Источники
- Преобразование символа в ASCII-код в JavaScript - Stack Overflow
- String.prototype.charCodeAt() - JavaScript | MDN
- Как преобразовать символы в ASCII-код с помощью JavaScript - Tutorialspoint
- Преобразование символа в его ASCII-код в JavaScript - Techie Delight
- JavaScript: преобразование символа в ASCII и обратно - Java Code Geeks
- Метод String charCodeAt() JavaScript - W3Schools