39 lines
1.0 KiB
JavaScript
39 lines
1.0 KiB
JavaScript
function checkToken(token, data, dataOffset) {
|
|
|
|
if(dataOffset + token.length > data.length) {
|
|
//console.log('dataOffset >> ', dataOffset);
|
|
return false;
|
|
}
|
|
|
|
var endIndex = dataOffset;
|
|
|
|
for(var i = 0; i < token.length; i++) {
|
|
if(token[i] !== data[endIndex++]) {
|
|
if(endIndex > 520000) {
|
|
console.log('token=',uint8ArrayToString(token));
|
|
console.log('data=', uint8ArrayToString(data, dataOffset, endIndex-dataOffset));
|
|
console.log('miss at %d %s dataOffset=%d', i, String.fromCharCode(data[endIndex]), endIndex);
|
|
console.log('miss at %d %s dataOffset=%d', i, String.fromCharCode(token[endIndex]), endIndex);
|
|
}
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
findIndexOfString = function(data, str, offset) {
|
|
|
|
offset = offset || 0;
|
|
|
|
var token = stringToUint8Array(str);
|
|
|
|
for(var i=offset; i < data.length; i++) {
|
|
if(token[0] === data[i]) {
|
|
//console.log('match @', i);
|
|
if(checkToken(token, data, i)) {
|
|
return i;
|
|
}
|
|
}
|
|
}
|
|
return -1;
|
|
} |