如何使用sprintf在字符串中包含十六进制值

Shi*_*hab 5 c printf hex

我想在c中包含i hex格式的值.

for(i=0;i<10;i++)
   sprintf(s1"DTLK\x%x\xFF\xFF\xFF\xFF\xFF\xFF",i);
Run Code Online (Sandbox Code Playgroud)

但上面的代码输出一个错误:\ x使用没有后面的十六进制数字

请任何人建议我一个正确的方式....

das*_*ght 1

您需要转义前面的斜杠\x

sprintf(s1"DTLK\\x%x\xFF\xFF\xFF\xFF\xFF\xFF",i);
//              ^------- Here
Run Code Online (Sandbox Code Playgroud)

根据您想要实现的输出,您可能还需要转义剩余的斜杠。

目前,该代码片段使用代码 生成六个字符的序列0xFF。如果这是您想要的,那么您的代码片段就完成了。如果您想查看一系列文字,即看起来像when 的\xFF字符串,您需要转义字符串中的所有斜杠:\x5\xFF\xFF\xFF\xFF\xFF\xFFi == 5

sprintf(s1"DTLK\\x%x\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF",i);
//              ^    ^    ^    ^    ^    ^    ^
Run Code Online (Sandbox Code Playgroud)

最后,如果您希望将值格式化为两位十六进制代码,即使该值小于 16,也可以使用%02x格式代码来表明sprintf您需要一个前导零。