0

我制作了一个 dll 挂钩,它将在每次事件发生在主应用程序上时发送我需要的字节数组的地址。

显示代码:

void receivedPacket(char *packet){
    short header = packet[2];

    TCHAR str[255];

    _stprintf(str, _T("Header : %lX\n"), header);  // This works fine. It return 0x38 as it should.

    WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE), str, strlen(str), 0, 0);
    WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE), packet, 34, 0, 0);

}

这是来自该地址的字节数组的示例,这就是我希望它显示的方式: 05 01 38 00 60 00 9D 01 00 00 00 00 00 70 C9 7D 0E 00 00 00 00 00 00 00 FF 20 79 40 00 00 00 00

但是,使用我当前的代码,它只会显示奇怪的符号。那么我们如何将所有这些奇怪的符号转换为十六进制呢?

我实际上是 C++ 的新手。

4

1 回答 1

2

格式化字符串中的每个字节:

static TCHAR const alphabet[] = _T("0123456789ABCDEF");

for (TCHAR * p = str; *p; ++p)
{
    TCHAR const s[2] = { alphabet[p / 16], alphabet[p % 16] };
    WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE), s, 2, 0, 0);
}
于 2012-08-08T11:14:54.743 回答