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

しかし、私の現在のコードでは、奇妙なシンボルしか表示されません。では、これらの奇妙なシンボルをすべて 16 進数に変換するにはどうすればよいでしょうか?

私は実際には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 に答える