¿Cómo reemplazo un personaje con su valor hexadecimal?


8

Quiero reemplazar un personaje con su literal hexadecimal. Por ejemplo antes de regex:

h

Después de la expresión regular:

0x68

Estoy intentando esto:

s/\([a-z]\)/\=printf("%#02x", submatch(0))/

Pero esto lo reemplaza con

00

¿Qué estoy haciendo mal? ¿Es esto posible?

Respuestas:


10

De esa manera, printfespera que un número decimal se convierta en hexadecimal. Todo lo que necesita hacer es convertir el carácter a un número de la siguiente manera:

s/\([a-z]\)/\=printf("%#02x", char2nr(submatch(0)))/

Ver :help char2nr()para más detalles.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.