目前連線RS232 ,RS485 通信控制 的請指點一下
VFP堅守者
uj5u.com熱心網友回復:
用程序編一個就好了
uj5u.com熱心網友回復:
?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
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/14982.html
標籤:VFP
上一篇:SQL的四大類有點搞不清了!
下一篇:查詢資料庫各種歷史記錄
