数制转换函数
dfwxj 2006-04-10 03:30:08 没事干,写了两个数制转换函数,以十进制数为基础,与二进制、八进制、十六进制相互转换,没有考虑容错,请大家提供优化,若有价值,再添加容错代码,增加小数
func dectoboh
para ndec,n0
local chex,i,ts
on erro retu ''
chex=''
i=0
ts='0123456789ABCDEF'
ndec=abs(ndec)
do while ndec>=n0
i=mod(ndec,n0)
ndec=int(ndec/n0)
chex=subs(ts,i+1,1)+chex
endd
chex=subs(ts,ndec+1,1)+chex
on erro
retu chex
功能:将十进制数转换为二、八、十六进制
语法:DecToBOH(十进制数,进制)
说明:十进制数为整数数值型,进制为数值型,返回字符型,出错返回空串,测试版,仅支持整数
***********************************
func bohtodec
para chex,n0
local ndec,t0,t1,t2,t3,t4,t5,t6,t7,t8,t9,ta,tb,tc,td,te,tf,i,j
on erro retu 0
ndec=0
t0=0
t1=1
t2=2
t3=3
t4=4
t5=5
t6=6
t7=7
t8=8
t9=9
ta=10
tb=11
tc=12
td=13
te=14
tf=15
chex=allt(chex)
j=len(chex)
for i=1 to j
tt=subs(chex,i,1)
ndec=ndec+t&tt.*n0^(j-i)
endf
on erro
retu ndec
功能:将二、八、十六进制数转换为十进制
语法:BOHToDec(二八十六进制数,进制)
说明:二八十六进制数为字符型,进制为数值型,返回数值型,出错返回0,测试版,仅支持整数
**********************
由于没有容错代码,会出现很多奇怪的结果哦,例如:dectoboh(20,17),返回结果为“13”