Я определил простой Uint8Array со значениями [0,1,2,3]. Затем я создал объект Blob с этими двоичными данными и прочитал их из fileReader с помощью метода readAsArrayBuffer. Но когда я получил значения из blob, они содержат [48, 49, 50, 51], а не [0,1,2,3]!
Это исходный код:
var bin = new Uint8Array(4);
bin[0] = 0;
bin[1] = 1;
bin[2] = 2;
bin[3] = 3;
console.log(bin); // [0,1,2,3]
var blob = new Blob(bin);
var fileReader = new FileReader();
fileReader.onload = function() {
var buffer = fileReader.result;
var dv = new DataView(buffer);
console.log(new Uint8Array(buffer)); // [49,50,51,52]
var dv = new DataView(buffer);
console.log([
dv.getUint8(0),
dv.getUint8(1),
dv.getUint8(2),
dv.getUint8(3)
]); // it also prints [49,50,51,52]
};
};
fileReader.readAsArrayBuffer(blob);
Почему это происходит? Я написал 0,1,2,3, но к каждому значению добавлялось еще 48. Есть ли что-то, что я пропустил?