Dev/C, C++
DisplayHex
newtype
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"); }
반응형