Sie müssen den Schrägstrich entkommen vor dem \x
:
sprintf(s1"DTLK\\x%x\xFF\xFF\xFF\xFF\xFF\xFF",i);
// ^------- Here
Je nachdem, was Ausgabe, die Sie erreichen möchten, müssen Sie die verbleibenden Schrägstriche als auch entkommen.
Derzeit erzeugt das Snippet eine Sequenz von sechs Zeichen mit dem Code 0xFF
. Wenn dies gewünscht ist, ist Ihr Codefragment vollständig. Wenn Sie möchten, dass eine Folge von \xFF
Literale sehen, dh eine Zeichenfolge, die wie \x5\xFF\xFF\xFF\xFF\xFF\xFF
aussehen, wenn i == 5
, müssen Sie alle Schrägstriche in der Zeichenfolge entkommen:
sprintf(s1"DTLK\\x%x\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF",i);
// ^^^^^^^
Schließlich, wenn Sie den Wert als eine formatierte mögen zweistelliger Hexadezimalcode, selbst wenn der Wert kleiner als sechzehn ist, verwenden Sie den Formatcode %02x
, um sprintf
mitzuteilen, dass Sie eine führende Null haben möchten.
Ich denke eher, er will den anderen Weg: die '\ xFF' sollte auf den Wert' 0xFF' erweitern, während nach der 'DTLK' er will einen variablen Wert ... – glglgl
@glglgl Es ist schwer zu sagen, aber sicher das ist der einzige Grund, warum ich denke, dass das OP speziell nach einem Hex-Wert fragen würde. – dasblinkenlight
Manche Leute verwechseln die Charaktere selbst mit ihrer Darstellung; deshalb denke ich das Gegenteil. YMMV. – glglgl