我有这样一行:
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/