FOXPRO 8进制,2进制,16进制转换 求大神指点

SUN_2020_SUN 2020-01-17 11:22:56
目前连线RS232 ,RS485 通信控制 的请指点一下

VFP坚守者
...全文
393 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
破晓宇 2020-09-28
  • 打赏
  • 举报
回复
二进制,剩下的八和十六自己悟吧 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
未来梦huahua 2020-06-11
  • 打赏
  • 举报
回复
?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
SiDe_如一 2020-03-04
  • 打赏
  • 举报
回复
用过程编一个就好了

2,727

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧