Что вызывает смещение индекса строки в Uint8Array? - PullRequest
0 голосов
/ 02 апреля 2019

Я пытаюсь анализировать волновые файлы с помощью File API.

Мне нужно найти индекс строки внутри заголовка файла, чтобы получить последующие данные.

Я пытался преобразовать строку и сопоставить необработанные байты в цикле for, но это оказало значительное влияние на снижение производительности при анализе файлов размером 10k +.

Я сейчас пытаюсь найти его, используя TextDecoder() и indexOf.

// buffer is a (part of) a wave file as ArrayBuffer 
const array = new Uint8Array(buffer);
const string = new TextDecoder().decode(array);
const index = string.indexOf('fmt');

Это даст мне индекс. Тем не менее, когда выполнить небольшую проверку и подтвердить, у меня есть правильный кусок ...

const check = array.slice(index, index + 4);

Я получаю различные результаты для идентификатора чанка (в данном случае это строка «FMT»). Например:

console.log(check);
// [102, 109, 116, 32]

или

console.log(check);
// [0, 102, 109, 116]

Индекс, который я получаю, иногда будет смещен на -2, -1 или 0. Это немного ненадежно.

Наверное, мой вопрос: Что вызывает это странное смещение?

Пожалуйста, не отсылайте меня в сторонние библиотеки для анализа файлов .wav, я бы хотел, чтобы это работало / я понял, почему это никогда не будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...