* 10进制和2进制之间转换
?_2to10(_10to2(-3222))
?_2to10(_10to2(3222))
* 10进制转换16进制
?transform(3222 ,[@0])
* 16进制转换10进制
?0x0C96
function _10to2(tn as integer) as string
local st ,i
st = []
for i = 31 to 0 step -1
st = st + iif(bittest(tn ,i) ,[1] ,[0])
next
return st
endfunc
function _2to10(tcb as string)
local i ,nc ,sig
nc = 0
*- 负整数
sig = iif(len(tcb) = 32 and left(tcb ,1) = [1] ,-1 ,1)
for m.i = len(tcb) to 1 step -1
nc = nc + int(val(substr(tcb ,m.i ,1)))*2^(len(tcb) - m.i)
next
return abs(bitnot(int(nc)-1)) * sig
endfunc