【发布时间】:2014-03-08 02:14:17
【问题描述】:
我必须将一个十六进制字节写入文件,但我遇到了问题。例如。
如果我有:
unsigned char a = 0x0;
我使用 fwrite 写入文件:
FILE *fp = fopen("file.txt",wb);
fwrite(&a,sizeof(unsigned char),1,fp);
fclose(fp);
当我打开文件时,我总是看到 20h,为什么不是 00h?
所以,我尝试使用:
fprintf(fp,"%x",a);
在这种情况下,我看到 0h,但我需要一个完整的字节,而不是半字节。 我该怎么办?
【问题讨论】:
-
您是在尝试将单个零字节写入文件,还是 ASCII 字符串“00”或“00h”?请说明您的意图。
-
另外,您使用什么工具来检查文件的内容?十六进制编辑器?
-
@dvnrrs 我想写00h。
-
在这种情况下,
fprintf(fp, "%02xh", a);就是你想要的(基本上是@unwind 的答案,但最后是h)。 -
@StefanoSanfilippo 我用 Notepad++ 进行检查,但我现在下载了一个十六进制编辑器并用它打开文件,一切正常......怎么了?