我有一个 nodejs 脚本,我想在其中解析 MP3 帧。这些帧很容易检测,因为每个帧都以两个字节开头0xff 0xfb
.
我正在使用一个Uint8Array
访问该文件的字节。使用[].indexOf.call(data, 0xff)
我可以轻松搜索单个字节,但不能搜索两个字节。显然我可以手动检查第二个字节,但我想知道是否有一种干净的方法来获取特定字节序列的索引。
显然,如果不编写自定义代码,就没有什么好的方法可以做到这一点,所以这就是我所做的:
Uint8Array.prototype.indexOfMulti = function(searchElements, fromIndex) {
fromIndex = fromIndex || 0;
var index = Array.prototype.indexOf.call(this, searchElements[0], fromIndex);
if(searchElements.length === 1 || index === -1) {
// Not found or no other elements to check
return index;
}
for(var i = index, j = 0; j < searchElements.length && i < this.length; i++, j++) {
if(this[i] !== searchElements[j]) {
return this.indexOfMulti(searchElements, index + 1);
}
}
return(i === index + searchElements.length) ? index : -1;
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)