vim - 如何在替换语句中将十六进制转换为十进制?

标签 vim

我有这样一行:

pad (2) = 0x0041



我想将十六进制更改为十进制,预期结果是

pad (2) = 65



我刚试过 :%s/\(.*\) = \(.*\)/\1 = \=printf("%d", submatch(2)) ,但失败了。

你会帮忙解决这个问题吗?

最佳答案

Vim 有一个 str2nr()函数将不同的数字表示形式转换为其十进制值。要转换十六进制值,您可以像这样使用它:

s/0x[0-9a-fA-F]\+/\=str2nr(submatch(0), 16)

关于vim - 如何在替换语句中将十六进制转换为十进制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2988533/

相关文章:

c - 为什么 vim 如此依赖编译时特性配置?

intellij-idea - PyCharm + IdeaVim -- 如何重新绑定(bind) Ctrl-C?

c - 从 cmd.exe 运行时如何从 cscope-win32 启动 gvim.exe?

vim - Vim 中的 ‘omnifunc’ 和 ‘completefunc’ 自动完成有什么区别,除了调用键映射?

vim - 您可以在vi/vim中的逗号(或任意字符)之间替换或删除吗?

在 Emacs 中使用 viper + vimpulse 时 Vim 宏不起作用

vim - 在 Vim 中保存常用的正则表达式模式?

python - 使用 VIM 完成内省(introspection)代码? ...或其他具有此功能的轻量级编辑器?

Vim:多种模式的重载映射

python - 如何让 "is not"突出显示为 pythonOperator?