hexdmp
hexdmp.c
/* 0 1 2 3 4 5 6 7 01234567890123456789012345678901234567890123456789012345678901234567890123456789 HHHHHHHH HH HH HH HH-HH HH HH HH-HH HH HH HH-HH HH HH HH XXXXXXXXXXXXXXXX */ #include
#include
#include
typedef unsigned char u_char; int main(int argc, char* argv[]) { FILE* pFile; u_char aucBuf[16]; u_char uc; char acLine[80]; char acTmp[8+1]; int iCount; int iRead; int i; if (argc != 2) { fprintf(stderr, "usage: hexdmp file\n"); return 1; } if (fopen_s(&pFile, argv[1], "rb") != 0) { fprintf(stderr, "fopen_s error\n"); return 1; } for (iCount = 0; ; iCount += 16) { iRead = fread(aucBuf, 1, 16, pFile); if (iRead <= 0) { break; } strcpy_s(acLine, sizeof acLine, " - - - "); sprintf_s(acTmp, sizeof acTmp, "%.8X", iCount); memcpy(acLine, acTmp, 8); for (i = 0; i < iRead; i++) { uc = aucBuf[i]; sprintf_s(acTmp, sizeof acTmp, "%.2X", uc); memcpy(acLine + 10 + i * 3, acTmp, 2); if (isprint(uc) == 0) { uc = '.'; } acLine[59 + i] = uc; } puts(acLine); if (iRead != 16) { break; } } fclose(pFile); return 0; }