二进制,剩下的八和十六自己悟吧
clear
input"请输入数字" to x
if x<0
f="1"
else
f="0"
endif
j=""
do while x<>0
y=mod(x,2)
x=int(x/2)
j=space(1)+alltrim(str(y)+j)
enddo
?space(5)+f+j
?Base_Convert(lc10,10,16) &&10进制转成16进制
Function Base_Convert(cNumber,nFromBase,nToBase)
If Parameters()#3
Messagebox('参数个数不对!',16,'错误')
Return ''
Endif
If Vartype(cNumber)#'C' Or Vartype(nFromBase)#'N' Or Vartype(nToBase)#'N'Or !Between(nFromBase,2,36) Or !Between(nToBase,2,36)
Messagebox('参数类型不对!',16,'错误')
Return ''
Endif
Private All
lnDecBak=Set('DECIMALS')
Set Decimals To 18
dict="0123456789ABCDEFGHIJKLMNOPQISTUVWXYZ"
cNumber=Upper(Alltrim(Transform(cNumber)))
nDecimalsWZ=At('.',cNumber) &&判断是否带小数
If nDecimalsWZ>0
cNumber2=Substr(cNumber,nDecimalsWZ+1)
cNumber=Left(cNumber,nDecimalsWZ-1)
Else
cNumber2=''
Endif
dec=0
n0=Len(cNumber)
For I=1 To n0
ch=Substr(cNumber,I,1)
N=At(ch,dict)
If !Between(N,1,nFromBase)
Return ''
Endif
dec=dec+(N-1)*nFromBase^(n0-I)
Endfor
dec2=0
n02=Len(cNumber2)
For I=1 To n02
ch2=Substr(cNumber2,I,1)
N2=At(ch2,dict)
If !Between(N2,1,nFromBase)
Return ''
Endif
dec2=dec2+(N2-1)/nFromBase^I
Endfor
If nToBase=10
Set Decimals To (lnDecBak)
If dec2=0
Return Transform(dec)
Else
Return numTOstr(dec+dec2)
Endif
Endif
Convert=''
Do While dec>=nToBase
N=Mod(dec,nToBase)
dec=Int(dec/nToBase)
Convert=Substr(dict,N+1,1)+Convert
Enddo
Convert=Substr(dict,dec+1,1)+Convert
Convert2=''
Do While dec2>0
N2=Int(dec2*nToBase)
dec2=dec2*nToBase-N2
Convert2=Convert2+Substr(dict,N2+1,1)
Enddo
Set Decimals To (lnDecBak)
If Len(Convert2)>0
Return Convert+'.'+Convert2
Else
Return Convert
Endif
Endfunc