Wie ersetze ich ein Zeichen durch seinen Hex-Wert?


8

Ich möchte ein Zeichen durch sein Hex-Literal ersetzen. Zum Beispiel vor Regex:

h

Nach Regex:

0x68

Ich versuche das:

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

Aber das ersetzt es durch

00

Was mache ich falsch? Ist das überhaupt möglich?

Antworten:


10

Auf diese Weise wird printferwartet , dass eine Dezimalzahl in eine hexadezimale Zahl umgewandelt wird. Alles was Sie tun müssen, ist das Zeichen wie folgt in eine Zahl umzuwandeln:

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

Siehe :help char2nr()für Details.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.