Я написал следующий код, но могу получить правильный результат:
const str = btoa("aaaabbbbccccdddd");
// Convert string to canvas
document.getElementById('canvas').getContext('2d').putImageData(
new ImageData(
new Uint8ClampedArray(str.split("").map(e => e.charCodeAt(0))),
Math.ceil(str.length/4),
1
), 0, 0);
// Convert canvas to string
const decodedStr = String.fromCharCode(...document
.getElementById('canvas')
.getContext('2d')
.getImageData(0, 0, Math.ceil(str.length/4), 1)
.data
.reduce((arr, elem) => [...arr, ...[elem]], []));
Почему str
и decodedStr
не совпадают?