#include <iostream>
char *StrToHexStr(char *str, int len)
{
char *newstr = new char[(len*2)];
char *cpnew = newstr;
char *cpold = str;
for(int i = 0; i < len; i++){
sprintf(cpnew, "%02X", (char)(*cpold++));
cpnew+=2;
}
return newstr;
}
int main(){
int len = 18;
char data[30]="binary\0data1234asd";
char pattern[6+1] = "313233";
char replaceto[6+1] = "911119";
char * pFind;
char * buf = data;
char * hexstr = StrToHexStr(buf,len);
std::cout<< "buf in hex - " << hexstr << std::endl;
pFind = strstr(hexstr,pattern);
if(pFind)
std::cout<< "need replace !" << std::endl;
return 0;
}
Редактирование данных сетевого пакета.
Нужно искать некоторую hex последовательность, и при нахождении заменять на свою. После чего передать измененный буфер в реальную функцию recv.
Например ищем: 00 38 00 02 00 22
Надо заменить на: 00 35 55 01 01 00
Помогите пожалуйста с построением оптимального алгоритма поиска в буфере определенной hex строки и ее замены. В конце должны получить указатель на редактированный буфер.
по каким параметрам? Где твой вариант?
Оптимальный - имею ввиду максимально производительный.
На данный момент вот что имеем. Нуждаюсь в помощи с заменой и преобразованием обратно в бинарные данные, которые потом пойдут в функцию recv().
Код: