文字を16進値に置き換えるにはどうすればよいですか?


8

文字を16進リテラルに置き換えたい。たとえば、正規表現の前に:

h

正規表現の後:

0x68

私はこれを試しています:

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

しかし、これは

00

何が悪いのですか?これは可能ですか?

回答:


10

そのようにしてprintf、10進数が16進数に変換されることを期待します。次のようにして、文字を数値に変換するだけです。

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

詳細:help char2nr()については、を参照してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.