首页 > 解决方案 > 是什么导致 Uint8Array 中字符串的索引偏移?

问题描述

我正在尝试使用 File API 分析波形文件。

我需要在文件头中找到字符串的索引,以便获取后续数据。

我曾尝试在循环中转换字符串并匹配原始字节for,但在分析 10k+ 文件时,这被证明是一个很大的性能杀手。

我现在正在尝试使用TextDecoder()and找到它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 文件,我很乐意让它工作/理解为什么它永远不会工作。

标签: javascriptarraysstringfilewav

解决方案


推荐阅读