[英]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.