newtype
::: newtype의 지식창고 :::
newtype
전체 방문자
오늘
어제
  • 분류 전체보기 (392)
    • Dev (214)
      • C, C++ (43)
      • Go (5)
      • Web (49)
      • DBMS (21)
      • DevOps (8)
      • Java (2)
      • Windows, Win32 (4)
      • Visual Basic (5)
      • C# (2)
      • Mobile (25)
      • SQL CE (7)
      • Google Map (6)
      • Python (2)
      • cygwin (2)
      • 기타 (32)
      • Ruby (1)
    • 명언 (10)
    • 모임 (18)
      • 붕주회 (3)
      • 신흥컴정 (14)
      • 웹20기 (1)
    • 사진 (8)
    • 불펌 (29)
    • 막글 (98)
    • 게임 (6)
    • 여행 (8)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 관리

공지사항

  • whoami
05-18 22:04
hELLO · Designed By 정상우.
newtype

::: newtype의 지식창고 :::

Dev/C, C++

DisplayHex

2008. 11. 13. 08:59

패킷 또는 버퍼를 파라미터로 받아 16진수 형태로 출력을 예쁘게 해준다.

* 사용예
DisplayHex( "Send Packet", szBuf, sizeof(szBuf) );

* 결과
[ Send Packet ] =========
-----------------------------------------------------------------------
ADDR  +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F  0123456789ABCDEF
-----------------------------------------------------------------------
0000  54 65 73 74 20 50 61 63 6B 65 74 20 53 61 6D 70  Test Packet Samp 
0010  6C 65 20 44 61 74 61 2E 2E 2E 2E 2E 20 5E 5E 00  le Data..... ^^. 
0020  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................ 
0030  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................ 
0040  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................ 
0050  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................ 
0060  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................ 
0070  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................ 
-----------------------------------------------------------------------

* 소스
void DisplayHex( char *title, char *pPacket, int size )
{
    long    i                   = 0;
    long    j                   = 0;
    long    lTotal              = 0;
    char    szBinBuff[64]       = {0,};
    char    szASCIIBuff[18]     = {0,};
    u_char  byBuff              = 0;
    char    cpWrk[256]          = {0};
	char    szBuf[2048]			= {0,};

    printf("[ %s ] =========\n", title );
    printf("-----------------------------------------------------------------------\n");
    printf("ADDR  +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F  0123456789ABCDEF\n");
    printf("-----------------------------------------------------------------------\n");

    for (i = 0; i * 0x10 < size; i++) 
	{
        memset(szBinBuff  , 0, sizeof(szBinBuff  ));
        memset(szASCIIBuff, 0, sizeof(szASCIIBuff));
        for (j = 0; j < 0x10; j++) 
		{
            byBuff = (u_char)*(((u_char*)pPacket) + i * 0x10 + j);
            sprintf(szBinBuff   + j * 3, "%02X ", byBuff);
            sprintf(szASCIIBuff + j    , "%c"   , 
                ((byBuff >= 32) && (byBuff <= 126)) ? byBuff : '.');
            lTotal ++;
            if (lTotal >= size) 
			{
                break;
            }
        }

		sprintf( szBuf, "%04X  %-47.47s  %-17.16s\n", i * 0x10, szBinBuff, szASCIIBuff);
        printf( szBuf );
    }

    printf("-----------------------------------------------------------------------\n");
}


반응형

'Dev > C, C++' 카테고리의 다른 글

Pro*C/C++ Precompiler Programmer's Guide  (0) 2009.03.13
한글이 포함된 문자열을 특정 byte로 자르기  (0) 2009.02.16
Oracle 에러코드  (1) 2008.07.08
c ini 읽는 모듈..  (2) 2008.04.30
tracelog  (0) 2008.01.23
    'Dev/C, C++' 카테고리의 다른 글
    • Pro*C/C++ Precompiler Programmer's Guide
    • 한글이 포함된 문자열을 특정 byte로 자르기
    • Oracle 에러코드
    • c ini 읽는 모듈..
    newtype
    newtype
    지극히 개인적인 지식의 창고

    티스토리툴바