import { findIndexOfData } from "./findIndexOfData" /** 从二级制数据中找到一块数据,根据标识头与标识尾 */ export function findBlockOfData( data: ArrayBuffer | Uint8Array, blockStart: ArrayBuffer | Uint8Array, blockEnd: ArrayBuffer | Uint8Array, startOffset: number = 0, /** 结果不包含起始与结束 */ withoutStarEnd: boolean = false ): { block: Uint8Array; offsetStart: number; offsetEnd: number } | void { let offset = startOffset if (data instanceof ArrayBuffer) data = new Uint8Array(data) let dataOrg = data let findStartIndex = findIndexOfData(dataOrg, blockStart, offset) if (findStartIndex === -1) return offset = findStartIndex + blockStart.byteLength let findEndIndex = findIndexOfData(dataOrg, blockEnd, offset) // console.log("findEndIndex", { findEndIndex, offset, findStartIndex }) if (findEndIndex === -1) return let block = dataOrg.slice(findStartIndex, findEndIndex + blockEnd.byteLength) if (withoutStarEnd) { block = block.slice(blockStart.byteLength, block.byteLength - blockEnd.byteLength) } return { block, offsetStart: findStartIndex, offsetEnd: findEndIndex + blockEnd.byteLength } }