我必须将十六进制字节写入文件,但遇到问题。例如。
如果我有:
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,但我需要一个完整字节,而不是半字节。
我应该怎么办?
第一个例子很难相信,它应该生成一个包含单字节且值为 0 的文件。但这并不是真正的文本文件,所以我猜你的工具可能会欺骗你。
第二次尝试更好,假设您想要一个文本文件,其中包含其中值的文本表示形式。要使其成为两个十六进制数字,请指定宽度和填充:
fprintf(fp, "%02x", a);
请注意,不存在“十六进制值”这样的东西。值就是值;有可能代表作为十六进制,但这不是值的一部分。十进制的 100 与十六进制的 64 和二进制的 1100100 相同。仅当将数字表示为数字字符串时,基数才重要,数字本身不能“是十六进制”。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)