Làm cách nào để thay thế một ký tự bằng giá trị hex của nó?


8

Tôi muốn thay thế một nhân vật bằng chữ hex của nó. Ví dụ trước regex:

h

Sau regex:

0x68

Tôi đang thử cái này:

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

Nhưng điều này thay thế nó bằng

00

Tôi đang làm gì sai? Điều này thậm chí có thể?

Câu trả lời:


10

Theo cách đó, printfhy vọng một số thập phân sẽ được chuyển đổi thành số thập lục phân. Tất cả những gì bạn cần làm là chuyển đổi ký tự thành một số như sau:

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

Xem :help char2nr()để biết chi tiết.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.