我尝试使用swprintf(buff, 4, L"%#03x", value)
,但在value = 0
时,我得到000
而不是0x0
。
答案 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! */ }