Я пытаюсь преобразовать код преобразования base64, который использовался для использования небезопасного конструктора Buffer, чтобы вместо этого использовать метод Buffer.allo c, но преобразование ведет себя странно. Вот мой код:
let originalText = JSON.stringify({city: "New York", date: "2020/05/12"});
console.log("DATA: " + originalText)
let base64Text = Buffer.alloc(originalText.length, originalText, "binary").toString('base64');
console.log("Base64 version: " + base64Text);
let loadedBuffer = Buffer.alloc(base64Text.length, base64Text, 'base64');
const reconstitutedData = loadedBuffer.toString();
console.log("Result: " + reconstitutedData);
И вот результат:
DATA: {"city":"New York","date":"2020/05/12"}
Base64 version: eyJjaXR5IjoiTmV3IFlvcmsiLCJkYXRlIjoiMjAyMC8wNS8xMiJ9
Result: {"city":"New York","date":"2020/05/12"}{"city":"New
Преобразование правильное, за исключением повторяющегося бита в конце. Очевидно, что длина строки base64 не подходит для использования здесь, но это не имеет смысла, потому что не похоже, что есть способ узнать длину исходной строки. Может я неправильно использую API?