Как объект класса Buffer в Node.js преобразует данные в данном случае?

let buff = Buffer.from('A');

console.log('A'.charCodeAt(0)); // код символа "А" - 65
console.log(buff); // 41
console.log(buff.length); // 1

Вопрос 1 : если я правильно понимаю, то в данном случае объект buff будет состоять из шестнадцатиричного представления числа 65? И длина его будет 1 байт?

Вопрос 2 : из теории про буфер я узнал, что вроде как компьютеры же могут читать только двоичную систему счисления, т.е. 010101... Поэтому буфер в какой-то (непонятный момент для меня) должен преобразовать вот этот шестнадцатеричный код в двоичный ну и соответственно обратно?

let buff = Buffer.from('№');

console.log('№'.charCodeAt( 0 )); // код символа "№" - 8470
console.log(buff); // e2 84 96
console.log(buff.length); // 3 

Вопрос 3 : Что в данном случае происходит ? Единственное, что я понял, это то, что длина (или размер, хм?) данного буфера — 3 байта! Но как происходит конвертация подобных символов? Я пробовал, ни под одну систему счисления у меня не совпал данный массив [ e2 84 96 ], видимо, я чот и в первом случае нe так понимаю! Если можно, объясните на более простых примерах (можно абстрактных), я учу эту азбуку с нуля, и не хотелось бы быть одним из тех, кто всё поверхностно хватает, довольствуясь инфой о том, что "буфер это ящик", а "буферизация это когда инэт тормозит"! Спасибо!


Ответы (1 шт):

Автор решения: vsemozhebuty

Чтобы понимать, что происходит, вам нужно иметь минимальную теоретическую базу относительно кодирования текста и его реализации в JavaScript. Если читаете на английском, вот несколько полезных ссылок:

Если отвечать на ваши вопросы вкратце (хотя понять это без базы будет, возможно, нелегко):

1-2. Буфер просто хранит числа от 0 до 255 (то есть числа, которые помещаются в один байт). Как они будут представлены, зависит от того, как вы их выведите. Внутри компьютера они хранятся в бинарном формате. А в консоль по умолчанию выводятся в шестнадцатеричном.

3. Buffer.from() по умолчанию сохраняет текст в буфере в кодировке UTF-8. Символ в кодировке UTF-8 будет состоять из 3 байтов, которые вы и видите в виде 3-х шестнадцатеричных чисел. Посмотреть разные способы кодировки символа можно, например, здесь: https://www.fileformat.info/info/unicode/char/2116/index.htm

→ Ссылка