我必须将一个十六进制字节写入文件,但我遇到了问题。例如。
如果我有:
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。基数仅在将数字表示为数字串时才重要,数字本身不能“是十六进制”。
关于c - 用C写十六进制(字节),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21682441/