티스토리 뷰
개발하면서 디버깅 바로 하려 하다보니 hexdump를 자주 쓰게 되는 것 같다.. 직접 다 만든 것은 아니고, stack overflow에 paddy라는 분이 구현해 두었던 걸 함수 형태로 쓰기 쉽게 바꿔둔게 끝이다.
코드 (원본 : https://stackoverflow.com/questions/16804251/how-would-i-create-a-hex-dump-utility-in-c)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | #include <iostream> #include <iomanip> #include <Windows.h> void hexdump( __in BYTE * p, __in DWORD len) { DWORD address = 0; DWORD row = 0; DWORD nread = 0; std::cout << std::hex << std::setfill('0'); while (1) { // Show the address std::cout << std::setw(8) << address; if (address >= len) break; nread = ((len - address) > 16) ? 16 : (len - address); // Show the hex codes for (DWORD i = 0; i < 16; i++) { if (i % 8 == 0) std::cout << ' '; if (i < nread) std::cout << ' ' << std::setw(2) << (DWORD)p[16 * row + i]; else std::cout << " "; } // Show printable characters std::cout << " "; for (DWORD i = 0; i < nread; i++) { if (p[16 * row + i] < 32) std::cout << '.'; else std::cout << p[16 * row + i]; } std::cout << "\n"; address += 16; row++; } std::cout << std::dec; } int main( __in int argc, __in char* argv[]) { BYTE buf[0x100] = {0,}; DWORD dwLen = 0x100; hexdump(buf, dwLen); } | cs |
참고
'Programming > C' 카테고리의 다른 글
[Compression] Compression 모음 (0) | 2019.02.19 |
---|---|
[Windows WebServer] Windows web server application 제작 및 SSL 바인딩 (0) | 2019.02.12 |
[Windows] Windows Error Code 목록 (0) | 2019.01.11 |
[Algorithm] 문자열 검색 알고리즘 적용 예시 (0) | 2019.01.07 |
[sqllite3] sqlcipher build for Windows (0) | 2018.10.23 |
댓글