Programming - cpueblo.com

데이타 버퍼를 HEX 값과 ASC 함께 출력


글쓴이 : 유광희 날짜 : 2002-07-26 (금) 13:50 조회 : 16759
ASC 값 중에 이상한 문자는 . 으로 처리를 해서 화면 처리시 오류가 없도록 한다. 아래 목록 중에 Buf[20480]; 은 땜빵이며.. Col 의 경우 아래는 21 개의 버퍼를 한 라인으로 처리를 한다
void TfrmSerialTest::ShowHex(BYTE *Buffer, int Size)
{
    const int Col = 21;

    BYTE Buf[20480];
    String Str;

    BYTE tmp[Col + 1];

    int i = 0;

    memset(Buf, 0, sizeof(Buf));
    memcpy(Buf, Buffer, Size);

    while(1)
    {
        String Hex = "";
        memset(&tmp, 0, sizeof(tmp));

        for (int c = 0; c < Col; c ++)
        {
            <FONT COLOR=#0000FF>if (i + c >= Size)
            {
                Hex += "   ";
                tmp[c] = ' ';
            }
            else
            {
                String Tmp;
                Tmp.printf("%02X ", Buf[i + c]);
                Hex += Tmp;

                if (Buf[i + c] > 32 && Buf[i + c] < <FONT COLOR=#FF00FF>127)
                    tmp[c] = Buf[i + c];
                else
                    tmp[c] = '.';
            }
        }
        WriteMessage(Hex + " " + (char *)tmp, clRed);
        i+=Col;
        if (i > Size)
            break;
    }

    WriteMessage("");
}

void TfrmSerialTest::WriteMessage(String Message, int Color)
{
    redtMessage->SelAttributes->Color = (TColor)Color;
    redtMessage->Lines->Add(Message);
}