Это похоже на то, для чего вы могли бы довольно легко использовать регулярные выражения.Первое, что нужно сделать, это загрузить файл в MATLAB в шестнадцатеричном формате и преобразовать его в шестнадцатеричную строку:
fid = fopen(filename);
bindata = fread(fid,'*uint8'); % Reads the data into an array of type uint8
fclose(fid);
hexstr = sprintf('%x',bindata); % Converts the binary data to a hex string
Это даст вам строку, содержащую данные файла в шестнадцатеричном формате, дляэкземпляр "4d41544c414220352e30..."
.Тогда довольно просто использовать регулярные выражения для поиска вашей шестнадцатеричной строки:
startlocs = regexp(hextr,pattern);
Где pattern
- это искомая строка.startlocs
даст вам начальное местоположение каждого из экземпляров шестнадцатеричного шаблона (в байтах, начиная с 1).