使用swprintf()打印“0x0”的格式字符串应该是什么?

时间:2012-05-30 21:16:51

标签: c++

我尝试使用swprintf(buff, 4, L"%#03x", value),但在value = 0时,我得到000而不是0x0

2 个答案:

答案 0 :(得分:4)

你需要文字中的“0x”,例如“0x%03x”。 x格式只打印十六进制的数字,它不会添加0x装饰。

答案 1 :(得分:1)

使用L"0x%x", value。使缓冲区只有四个元素可能是一个坏主意(只要value大于0xF)。您应该存储返回值并确保字符串没有被截断:

int n = swprintf(buff, sizeof buff, L"0x%x", value);

if (n >= sizeof buff) { /* truncation! */ }