簡體   English   中英

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

[英]how to include hex value in string using sprintf

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

for(i=0;i<10;i++)
   sprintf(s1"DTLK\x%x\xFF\xFF\xFF\xFF\xFF\xFF",i);

但上面的代碼輸出一個錯誤:\\ x使用沒有后面的十六進制數字

請任何人建議我一個正確的方式....

你需要轉義\\x前面的斜杠:

sprintf(s1"DTLK\\x%x\xFF\xFF\xFF\xFF\xFF\xFF",i);
//              ^------- Here

根據您希望實現的輸出,您可能還需要轉義剩余的斜杠。

目前,該片段產生一個包含六個字符的序列,代碼為0xFF 如果這是你想要的,你的代碼片段就完成了。 如果你想看到一系列\\xFF文字,即當i == 5時看起來像\\x5\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF的字符串,你需要轉義字符串中的所有斜杠:

sprintf(s1"DTLK\\x%x\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF",i);
//              ^    ^    ^    ^    ^    ^    ^

最后,如果您希望將值格式化為兩位十六進制代碼,即使該值小於十六,也可以使用%02x格式代碼告訴sprintf您想要一個前導零。

假設您不希望字面上有\\x00 .. \\x0A ,但需要相應的字節

sprintf(s1, "DTLK%c\xFF\xFF\xFF\xFF\xFF\xFF",i);

插入\\x%x將處於錯誤的抽象級別...

如果,OTOH,你真的想要字面上有十六進制字符而不是以命名的hey字符作為其表示的字節,其他答案可能更有幫助。

\\x期望像\\xC9這樣的十六進制值。

如果要在輸出中包含\\x ,則需要使用\\\\轉義\\

sprintf(s1"DTLK\\x%x\xFF\xFF\xFF\xFF\xFF\xFF",i);
sprintf(s1"DTLK\\x%x\xFF\xFF\xFF\xFF\xFF\xFF",i);
//              ^------- Here

根據您希望實現的輸出,您可能還需要轉義剩余的斜杠。

目前,該片段產生一個包含六個字符的序列,代碼為0xFF 如果這是你想要的,你的代碼片段就完成了。 如果你想看到一系列\\xFF文字,即當i == 5時看起來像\\x5\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF的字符串,你需要轉義字符串中的所有斜杠:

sprintf(s1"DTLK\\x%x\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF",i);

//              ^    ^    ^    ^    ^    ^    ^

最后,如果您希望將值格式化為兩位十六進制代碼,即使該值小於16,也請使用%02x格式代碼告訴sprintf您需要前導零。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM