[20180211]在vim中使用bc进行各种运算.txt

[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

请使用浏览器的分享功能分享到微信等