@VirusesAnalystCoder

Как записать hex в файл?

Всем привет.
Есть такой код:
string ToHex(const string& s, bool upper_case)
{
    ostringstream ret;

    for (string::size_type i = 0; i < s.length(); ++i)
        ret << hex << setfill('0') << setw(2) << (upper_case ? uppercase : nouppercase) << (int)s[i];

    return ret.str();
}

int main(int argc, char* argv[]) {
    ifstream::pos_type size;
    char * memblock;

    ifstream file ("program1.cs", ios::in|ios::binary|ios::ate);
    if (file.is_open())
    {
        size = file.tellg();
        memblock = new char [size];
        file.seekg (0, ios::beg);
        file.read (memblock, size);
        file.close();
    }
    string read_bytes = ToHex(memblock, true);
    cout << read_bytes << endl;

    string need_replace = "707269766174";
    size_t pos = read_bytes.find(need_replace);

    read_bytes.replace(pos, need_replace.length(), "7075626C6963");

    ofstream replaced("rep.cs");
    replaced << read_bytes; // ТУТ НУЖНА ПРАВИЛЬНАЯ ЗАПИСЬ В ФАЙЛ
    replaced.close();

    getchar();
}

Но дело в том после записи в файл, я получаю текст, а не нужный hex.
То есть по коду я заменяю 707269766174 hex адресс на 7075626C6963. По этому адрессу находится слово "privat". Я его преобразую в hex "public". Но на выходе я получаю не "public" преобразованный из hex, а просто HEX в тексте. Т.е в файле находится это: "7075626C6963"... Надеюсь получилось обьяснить.
Помогите))
  • Вопрос задан
  • 600 просмотров
Решения вопроса 1
@VirusesAnalystCoder Автор вопроса
Решено!
Требовалось преобразовать string, в котором находится hex, в unsigned char* или unsigned char[], далее записать в файл в бинарном режиме.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Надо записывать в файл, открытй в двоичном режиме для записи
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы