avete bisogno di sfuggire la barra su davanti alla \x
:
sprintf(s1"DTLK\\x%x\xFF\xFF\xFF\xFF\xFF\xFF",i);
// ^------- Here
a seconda di cosa uscita che si desidera raggiungere, potrebbe essere necessario per sfuggire alle rimanenti tagli pure.
Attualmente lo snippet produce una sequenza di sei caratteri con il codice 0xFF
. Se questo è quello che vuoi, il tuo frammento di codice è completo. Se volete vedere una sequenza di \xFF
letterali, cioè una stringa che assomiglia \x5\xFF\xFF\xFF\xFF\xFF\xFF
quando i == 5
, è necessario fuggire tutti i tagli nella stringa:
sprintf(s1"DTLK\\x%x\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF",i);
// ^^^^^^^
Infine, se si desidera che il valore formattato come codice esadecimale a due cifre anche se il valore è inferiore a sedici, utilizzare il codice di formato %02x
per indicare a sprintf
che si desidera uno zero iniziale.
Penso piuttosto che voglia il contrario: il '\ xFF' dovrebbe espandersi al valore' 0xFF' mentre dopo il 'DTLK' vuole un valore variabile ... – glglgl
@glglgl È difficile dirlo con certezza, ma questa è l'unica ragione per cui penso che l'OP chiederà specificamente un valore esadecimale. – dasblinkenlight
Alcune persone mescolano i personaggi stessi con la loro rappresentazione; è per questo che penso il contrario. YMMV. – glglgl