我想要以十六进制形式打印无符号短整型,例如0XFFFF。问题在于我想要小写的x而不是大写的X。我不知道该怎么做。
fprintf(c,"%#06X,\n\t", pixel[i]));
我想要以十六进制形式打印无符号短整型,例如0XFFFF。问题在于我想要小写的x而不是大写的X。我不知道该怎么做。
fprintf(c,"%#06X,\n\t", pixel[i]));
将%X占位符更改为%x,您应该会得到小写字母:
fprintf(c, "%#06x\n", pixel[i]);
将数字输出为0xffff
。如果pixel是无符号shorts数组且您想使格式与数据匹配,可以执行以下操作:
fprintf(c, "%#06hx\n", pixel[i]);
如果你真的想要0xFFFF
,那很简单:
fprintf(c, "0x%04hX\n", pixel[i]);
x
小写。请注意,参数必须为 unsigned int
,以避免实现定义行为,这需要进行强制转换。 - too honest for this site(unsigned)
强制类型转换都不会涉及到实现定义的行为问题。 "0x%04hX"
显然是该用户所需要的。 - chux - Reinstate Monica
%X
是unsigned short
的错误类型说明符,pixel[i]
也是错误的类型。 - too honest for this siteint
。请阅读有关整数提升的内容,以及在 C 标准中阅读printf
手册、文档或定义。 - too honest for this site0x
:这不可能自动完成(我也不喜欢这个)。但是有一个明显而简单的解决方案。记住,在格式字符串中也可以有普通文本。 - too honest for this siteINT_MAX <
USHRT_MAX`,它可能会调用实现定义的行为。为什么不使用专门用于此目的的类型说明符和类型呢? - too honest for this site