我必须用十六进制写一个字节到文件但是我有问题。例如。
如果我有:
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 :(得分:6)
第一个例子很难相信,它应该生成一个文件,其中包含一个值为0的单字节。那不是真正的文本文件,所以我想你的工具可能会欺骗你。
第二次尝试更好,假设您需要一个文本表示其值的文本文件。要使其成为两个十六进制数字,请指定宽度和填充:
fprintf(fp, "%02x", a);
请注意,没有“十六进制值”这样的东西。值是一个值;它可以表示为十六进制,但这不是值的一部分。 100十进制与十六进制中的64相同,二进制中为1100100。只有在将数字表示为数字串时,基数才有意义,数字本身不能是“十六进制”。