Bagaimana cara mengganti karakter dengan nilai hex?

8

Saya ingin mengganti karakter dengan hex literal-nya. Misalnya sebelum regex:

h

Setelah regex:

0x68

Saya mencoba ini:

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

Tapi ini menggantikannya dengan

00

Apa yang saya lakukan salah? Apakah ini mungkin?

James
sumber

Jawaban:

10

Dengan cara itu, printfdiharapkan angka desimal dikonversi menjadi angka heksadesimal. Yang perlu Anda lakukan adalah mengonversi karakter ke angka sebagai berikut:

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

Lihat :help char2nr()detailnya.

Jair López
sumber