在C中打印带填充零的十六进制

在C中打印带填充零的十六进制,c,hex,C,Hex,我有%#x来打印数字的十六进制表示。对于5,它正在打印0x5,但我希望它打印0x00000005,并填充8个零。我尝试了%#08x,但这似乎从我想要保留的输出中删除了0x。然后我尝试了%#080x,它用大量的零填充输出。如何修复此问题,以便保留0x?“%#08x”应该这样做,否则请尝试“0x%08x”。8是输出的宽度,这意味着可能需要“%#010x”来获取2个字符的“0x”,然后获取8个字符的“00000005”。IAC,我怀疑你有一个不兼容的编译器。@chux0x%08x工作正常!注意:我更喜

我有
%#x
来打印数字的十六进制表示。对于5,它正在打印
0x5
,但我希望它打印
0x00000005
,并填充8个零。我尝试了
%#08x
,但这似乎从我想要保留的输出中删除了
0x
。然后我尝试了
%#080x
,它用大量的零填充输出。如何修复此问题,以便保留
0x

“%#08x”
应该这样做,否则请尝试
“0x%08x”
8
是输出的宽度,这意味着可能需要“%#010x”来获取2个字符的“0x”,然后获取8个字符的“00000005”。IAC,我怀疑你有一个不兼容的编译器。@chux
0x%08x
工作正常!注意:我更喜欢“0x%08X”而不是“0x%08X”,也更喜欢使用“#”。您的结果可能会有所不同。当然,其他人会发布一个关于原因的完整答案。