Преобразовать шестнадцатеричный указатель в строку и сохранить его в текстовом файле C ++ - PullRequest
0 голосов
/ 02 ноября 2018

Я создаю DLL, которая вводится в процесс, и возвращаю шестнадцатеричное значение, например: 570AC400. У меня есть функция типа __int64 GetLocalPlayer_EX(), которая возвращает эти шестнадцатеричные значения, но текст, сохраненный в TXT, возвращает странную строку, такую ​​как @ * ░B

char *ptr = reinterpret_cast<char*>(GetLocalPlayer_EX());//GetLocalPlayer_EX() is function return hex value
std::string str(ptr);

printf("LocalPlayer = %s\n", ptr);//print to test, but return strange string like  @*░B should be 570AC400


void WriteLogFile(const char* szString)//convert char hex to string and save in txt
{


    FILE* pFile = fopen("C:\\TesteArquivo\\TesteFile.txt", "a");
    fprintf(pFile, "%s\n", szString);
    fclose(pFile);


}

WriteLogFile(vOut); // call function to save txt file

PS: если я использую printf("LocalPlayer =%I64X\n", ptr);, возвращаемое шестнадцатеричное значение будет правильным.

1 Ответ

0 голосов
/ 02 ноября 2018

Вы получаете необработанный int из функции. Вы не должны бросать его на символ *. Попробуйте это:

__int64 rv = GetLocalPlayer_EX();

printf("LocalPlayer = %ld\n", rv);
printf("LocalPlayer = %X\n", rv);

но мне интересно, правильна ли подпись функции. Действительно ли он возвращает __int64, а не ClientPlayer*?

Edit: Так как это выглядит замаскированным указателем,

char *ptr = reinterpret_cast<char*>(GetLocalPlayer_EX());
printf("%p\n", ptr);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...