“七十二变”进制函数

 <%

'********************************************
'功能:把任何一个不大于72进制的数转换为另外一个不大于72进制的数,由0123ABCXYZ[\]^_`abcdxyz{|}~组成。xnb@sohu.com 作于2012年2月26日
'调用 T=DecTranTo(TranToDec(数,源进制),目标进制)
'举例:
' response.write DecTranTo(TranToDec("2147459999","10"),"36")  & "(结果是 ZIJIQN )<br>"
' response.write DecTranTo(TranToDec("2147483647","10"),"72")  & "(结果是 17x[Hn )<br>"
' response.write DecTranTo(TranToDec("000000X5Zm", 72 ), 10 )  & "(结果是 12345678 )<br>"
'验证:
'server.scriptTimeOut=666
'for i=900002147483000 to 900002147483647   '允许M大于2^31=2147483648,如900002147483648
'T=DecTranTo(TranToDec(i,"10"),"72") '十进制转72进制
'if trim(clng(i))=DecTranTo(TranToDec(T,"72"),"10") then response.write "i=" &i &"  T=" & T & " 验证正确<br>"
'next
'---------------------------------------------
Public Function DecTranTo(ByVal M, ByVal r1) '十进制转为r1进制
Dim StrDtoR
Dim mr
StrDtoR = ""
Do While M <> 0 '取余数组成新进制数,直到余数为0
mr = M - Int(M / r1) * r1 
M = Int(M / r1)
If mr >= 10 Then
StrDtoR = Chr(mr - 10 + 65) & StrDtoR
Else
StrDtoR = mr & StrDtoR
End If
Loop
DecTranTo = StrDtoR
End Function
'---------------------------------------------
Public Function TranToDec(ByVal M, ByVal r2) 'r2进制转为十进制
Dim StrRtoD, mr, i
StrRtoD = 0
For i = 1 To Len(M) '根据 N进制数abc 转为十进制算法为 a*N^2+b*N^1+c*N^0
mr = Mid(M, i, 1)
If Asc(mr) >= 65 Then
mr = Asc(mr) - 65 + 10
End If
If Not IsNumeric(mr) Then mr = 0
StrRtoD = StrRtoD + mr * ((r2 ^ (Len(M) - i)))
Next
TranToDec = StrRtoD
End Function

'********************************************

%>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值