fprintf(fp, "%02x", int8_t(-10));
输出结果:
fffffff6
-10的十六进制表示是f6,但是在f6之前还有6个f,即使十六进制输出格式控制要求两位也没有用。
解决方法:
fprintf(fp, "%02hhx", (int8_t)(-10));
输出结果:
f6
解释:02表示不足两位补足两位,不足的位用0补齐,hh表示以short类型打印,前面限制了最短的输出位数,后面限制了最长的输出位数。
fprintf(fp, "%02x", int8_t(-10));
输出结果:
fffffff6
-10的十六进制表示是f6,但是在f6之前还有6个f,即使十六进制输出格式控制要求两位也没有用。
解决方法:
fprintf(fp, "%02hhx", (int8_t)(-10));
输出结果:
f6
解释:02表示不足两位补足两位,不足的位用0补齐,hh表示以short类型打印,前面限制了最短的输出位数,后面限制了最长的输出位数。