#include #include #include void WriteBinary(FILE *fout, const BYTE *pb, size_t cb) { for (DWORD addr = 0; addr < cb; addr += 0x10) { fprintf(fout, "%08X ", addr); for (size_t column = 0; column < 16; ++column) { if (addr + column >= cb) { if (column == 8) fprintf(fout, " "); fprintf(fout, " "); } else { if (column == 8) fprintf(fout, " -"); fprintf(fout, " %02x", (pb[addr + column] & 0xFF)); } } fprintf(fout, " "); for (size_t column = 0; column < 16; ++column) { if (addr + column >= cb) { break; } else { BYTE b = pb[addr + column]; if (isprint(b) || IsCharAlphaNumericW(b)) fprintf(fout, "%c", b); else fprintf(fout, "."); } } fprintf(fout, "\n"); } } int main(void) { const BYTE ab[] = { 0x23, 0x14, 0x12, 0x41, 0x23, 0x89, 0x01, 0x82, 0x38, 0x10, 0x92, 0x83, 0x18, 0x03, 0x98, 0x17, 0x74, 0x98, 0x21, 0x79, 0x19, 0x46, 0x91, 0x26, 0x31, 0x92, 0x38, 0x61, 0x92, 0x63, 0x81, 0x92, 0x3f, 0xf1, 0x23, 0x97, 0xff, 0x71, 0x92, 0x37, 0x89, 0x17, 0x92, 0x31, 0x82, 0x37, 0x91, 0x73, 0x27, 0x91, 0x87, 0x31, 0x79, 0x38, 0x71, 0x29, 0x37, 0x18, 0x23, 0x71 }; WriteBinary(stdout, ab, sizeof(ab)); }