[20180211]在vim中使用bc进行各种运算.txt
--//别人的建议,完善一下在vim调用bc进行各种运算.
--//我以前定义如下,完成计算,10,16进制转换.
noremap cc Yp!!bc -lqkA = J
noremap ch YpIobase=16;!!bc -lqkA = 0xJxguu
noremap cd YpgUU:s/0x//geiIibase=16;!!bc -lqkA = J
--//去年完善实现oracle数据块转换,以及scn拆分为scn_wrap,scn_base的计算.
noremap c22 Y2pA/4194304!!bc -qjA%4194304!!bc -q2kA = set dba 3Js,
noremap c32 Y4pA/4294967296!!bc -qjA%4294967296!!bc -q2kA = scn_wrap.scn_base: 3Js.jIobase=16;A/4294967296!!bc -qjIobase=16;A%4294967296!!bc -qguu2kA = scn_wrap,scn_base: 3Js,
noremap c16 Y2pA/65536!!bc -qjA%65536!!bc -q2kA = /16 %16: 3Js,
--//比如知道块地址有时候16进制的,比如0x0040007a,按照前面的设置
0x0040007a = 4194426
4194426 = set dba 1,122
--//先输入 \cd 转换 10进制,然后 \c22 转换 数据块的dba地址.有点麻烦,讲2者结合在一起:
noremap d22 YpgUU:s/0x//geiIibase=16;!!bc -lqkA = jY2pA/4194304!!bc -qjA%4194304!!bc -q2kA = set dba 3Js,kJ
0x0040007a =
4194426 = set dba 1,122
--//这样输入\d22
0x0040007a = 4194426 = set dba 1,122
--//scn如果这样如何计算:
0x0005.bcf9fda3
noremap d32 YpgUU:s/0x//ge:s/\.//geiIibase=16;!!bc -lqkA = jY2pA/4294967296!!bc -qjA%4294967296!!bc -q2kA = scn_wrap.scn_base: 3Js.kJ
0x0005.bcf9fda3 = 24645336483 = scn_wrap,scn_base: 5,3170500003
--//这样输入\d32
--//scn(10进制转换16进制形式)如果这样如何计算:
5.3170500003
noremap h32 Ypg:s/\./*4294967296+/gei!!bc -lqkA = jY2pIobase=16;A/4294967296!!bc -qjIobase=16;A%4294967296!!bc -qguu2kA = scn_wrap.scn_base: 3Js.kJ
5.3170500003 = 24645336483 = scn_wrap,scn_base: 5,bcf9fda3
$cat bc.vim
noremap cc Yp!!bc -lqkA = J
noremap ch YpIobase=16;!!bc -lqkA = 0xJxguu
noremap cd YpgUU:s/0x//geiIibase=16;!!bc -lqkA = J
noremap c22 Y2pA/4194304!!bc -qjA%4194304!!bc -q2kA = set dba 3Js,
noremap c32 Y4pA/4294967296!!bc -qjA%4294967296!!bc -q2kA = scn_wrap.scn_base: 3Js.jIobase=16;A/4294967296!!bc -qjIobase=16;A%4294967296!!bc -qguu2kA = scn_wrap,scn_base: 3Js,
noremap c16 Y2pA/65536!!bc -qjA%65536!!bc -q2kA = /16 %16: 3Js,
noremap d22 YpgUU:s/0x//geiIibase=16;!!bc -lqkA = jY2pA/4194304!!bc -qjA%4194304!!bc -q2kA = set dba 3Js,kJ
noremap d32 YpgUU:s/0x//ge:s/\.//geiIibase=16;!!bc -lqkA = jY2pA/4294967296!!bc -qjA%4294967296!!bc -q2kA = scn_wrap.scn_base: 3Js.kJ
noremap h32 Ypg:s/\./*4294967296+/gei!!bc -lqkA = jY2pIobase=16;A/4294967296!!bc -qjIobase=16;A%4294967296!!bc -qguu2kA = scn_wrap.scn_base: 3Js.kJ