我期待将C中的现有代码转换为执行以下操作:我正在尝试编写一个十六进制转储程序,该程序打印出地址:值可打印字符。 目前,数值的代码是打印的格式如下:一次打印十六进制数字2个字节
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,将更清楚地解释变量的完整代码可以在这里找到[链接](http://orion.math.iastate.edu/burkardt/c_src/ hexdump/hexdump.c) – simplicity
@Tawnos这不是没有说明的行为吗? –