C에서 기존 코드를 변환하려면 다음을 수행하려면 찾고 : 주소를 인쇄하는 16 진수 덤프 프로그램을 쓰려고합니다 : 인쇄 할 수있는 문자 값.한 번에 2 바이트 16 진수 인쇄
이0003540: 05 04 06 75 6e 73 69 67 6e 65 64 20 63 68 61 72 ...unsigned char
원하는 진수 출력 : 쌍
0003540: 0504 0675 6e73 6967 6e65 6420 6368 6172 ...unsigned char
현재 코드 인쇄 :
addr = 0;
while ((cnt = (long)
fread (buf, sizeof (unsigned char), 16, filein)) > 0) {
b = buf;
/* Print the address in hexadecimal. */
fprintf (fileout, "%07lx ", addr);
addr = addr + 16;
/* Print 16 data items, in pairs, in hexadecimal. */
cnt2 = 0;
for (m = 0; m < 16; m++) {
cnt2 = cnt2 + 1;
if (cnt2 <= cnt) {
fprintf (fileout, "%02x", *b++);
}
else {
fprintf (fileout, " ");
}
fprintf (fileout, " ");
}
/* Print the printable characters, or a period if unprintable. */
fprintf (fileout, " ");
cnt2 = 0;
for (n = 0; n < 16; n++) {
cnt2 = cnt2 + 1;
if (cnt2 <= cnt) {
if ((buf[n] < 32) || (buf[n] > 126)) {
fprintf (fileout, "%c", '.');
}
else {
fprintf (fileout, "%c", buf[n]);
}
}
}
fprintf(fileout, "\n");
}
어떻게 이것을 변경할 수 현재 값에 대한 코드는 다음과 같은 형식의 인쇄입니다 코드 AB12 CD34 형식을 달성하기 위해? 감사합니다.
fprintf (fileout, "% 02x % 02x", * b ++, * b ++) 변수 이름을 모르겠다 ... – Tawnos
안녕 Tawnos, 변수를 더 명확하게 설명하는 전체 코드는 여기 [link] (http://orion.math.iastate.edu/burkardt/c_src/)에서 찾을 수 있습니다. hexdump/hexdump.c) – simplicity
@ Tawnos 그 구체적인 동작이 아닌가요? –