ohif-viewer/Packages/dicomweb/lib/findIndexOfString.js
2016-01-11 11:32:20 +01:00

53 lines
1.4 KiB
JavaScript

/**
* Converts a String to a UInt8 array of character codes
* @param {String} str Input string
* @returns {Uint8Array} Uint8 Array of character codes
*/
function stringToUint8Array(str) {
var uint = new Uint8Array(str.length);
for (var i = 0,j = str.length;i< j;i++){
uint[i] = str.charCodeAt(i);
}
return uint;
}
function checkToken(token, data, dataOffset) {
if (dataOffset + token.length > data.length) {
//console.log('dataOffset >> ', dataOffset);
return false;
}
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 (data[i] === token[0]) {
//console.log('match @', i);
if (checkToken(token, data, i)) {
return i;
}
}
}
return -1;
};