В C ++, как я могу правильно хранить тип BYTE в переменной? - PullRequest
0 голосов
/ 26 января 2020

Заранее извиняюсь, если это очевидно или был дан ответ в другом месте. Я искал несколько часов, но моя неопытность в C ++ делает вероятным, что мне не хватает соответствующего словарного запаса для формирования подходящих поисковых терминов.

Проблема, с которой я сталкиваюсь, возникает в контексте использования этот пример кода, в котором перечислены все модули, используемые конкретным запущенным процессом.

Я изо всех сил пытаюсь найти способ сохранить выходные данные, полученные с помощью следующей строки кода, в переменной:

    _tprintf( TEXT("\n     base address   = 0x%08X"), (DWORD) me32.modBaseAddr );

Из документов Microsoft здесь похоже, что 'me32.modBaseAddr' является указателем на переменную типа BYTE. Приведенный выше код очень красиво печатает правильный шестнадцатеричный адрес, хранящийся в me32.modBaseAddr, в консоль.

Я хочу сохранить me32.modBaseAddr в переменной, которую затем можно передать в std :: ofstream ( Я хочу записать это в файл).

Я уверен, что не понимаю чего-то фундаментального, так что даже если бы кто-то даже мог указать мне правильное направление для того, что мне нужно узнать об этом, было бы очень полезно.

Спасибо !!

Ответы [ 2 ]

1 голос
/ 26 января 2020

Элемент modBaseAddr - это, в основном, указатель на первый элемент массива modBaseSize элементов. Каждый элемент представляет собой BYTE.

Таким образом, чтобы записать все необработанные двоичные данные в поток (открытый в двоичном режиме), вы можете сделать, например,

my_stream.write(reinterpret_cast<char*>(me32.modBaseAddr), me32.modBaseSize);
0 голосов
/ 26 января 2020

если я правильно понял, вы хотите сохранить эту строку отформатированного текста?

C стиль лучше всего подходит для этого, не используйте переинтерпретацию приведения, вы только заставляете компилятор работать тяжелее и предотвращаете его от оптимизации до вашего кода. Просто используйте этот код:

char var[256];
sprintf(var, "\n     base address   = 0x%08X", me32.modBaseAddr);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...