Risposte:
In tal modo, si printf
aspetta che un numero decimale venga convertito in uno esadecimale. Tutto quello che devi fare è convertire il personaggio in un numero come segue:
s/\([a-z]\)/\=printf("%#02x", char2nr(submatch(0)))/
Vedi :help char2nr()
per i dettagli.