簡體   English   中英

在 Uint8Array 中搜索多字節模式

[英]Search for multi-byte pattern in Uint8Array

我有一個 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;
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM