以十六进制形式打印字符串
void print_data(const char* data, int data_len) { int i, j; unsigned int offset = 0; int total_row = data_len / 16; int left_data_len = data_len % 16; /* print data_len / 16 */ for (j = 0; j < total_row; j++) { printf("# %08X ", offset); for (i = 0; i < 16; i++) { printf("%02X ", data[j*16+i]); } for (i = 0; i < 16; i++) { if ((data[j*16+i] < 0x20) || (data[j*16+i] > 0x7F)) { printf("."); } else { printf("%c", data[j*16+i]); } } offset += 16; printf("\n"); } /* print data_len % 16 */ if (left_data_len > 0) { printf("# %08X ", offset); for (i = 0; i < left_data_len; i++) { printf("%02X ", data[total_row*16+i]); } for (i = 0; i < 16 - left_data_len; i++) { printf(" "); } for (i = 0; i < left_data_len; i++) { if ((data[total_row*16+i] < 0x20) || (data[total_row*16+i] > 0x7F)) { printf("."); } else { printf("%c", data[j*16+i]); } } printf("\n"); } return; } /* print_data */