8,10,16,36,62进制之间的转换for vb/vbscript

下面是VBSCRIPT的写法

Function N10toC62(b, bt) If bt<2 Or bt>62 Then bt = 16 '默认为 16 进制 End If '2进制 0-1 '8进制 0-7 可以用 OCT 函数代替 '16进制 0-9 A-F 可以用 HEX 函数代替 '36进制 0-9 A-Z '62进制 0-9 A-Z a-z '都不对,就用16进制,如果输入数据不符合要求,则出错 Dim a Dim a1 Dim s Do while b<>0 a= b mod bt if a>=0 and a<=9 then a1 = CStr(a) end if if a>=10 and a<=35 then a1 = Chr(a + 55) end if if a>=36 and a<=61 then a1 = Chr(a + 61) end if ' Select Case a ' Case 0 To 9 ' a1 = CStr(a) ' Case 10 To 35 ' a1 = Chr(a + 55) ' Case 36 To 61 ' a1 = Chr(a + 61) ' End Select s = a1 & s b = b \ bt Loop N10toC62 = s End Function Function C62ToN10(strA , bt) If bt < 2 Or bt > 62 Then bt = 16 '默认为 16 进制 End If '2进制 0-1 '8进制 0-7 可以用 clng("&O71") 代替 '16进制 0-9 A-F 可以用 clng("&Hf1") 代替 '36进制 0-9 A-Z '62进制 0-9 A-Z a-z '都不对,就用16进制,如果输入数据不符合要求,则出错 If bt <= 36 Then strA = UCase(strA) '小于等于36进值时应该全部转换 End If Dim a Dim b Dim b1 Dim c Dim l Dim i l = Len(strA) For i = 1 To l b1 = Mid(strA, i, 1) a=Asc(b1) if a>=48 and a<=57 then b = CLng(b1) end if if a>=65 and a<=90 then b = Asc(b1) - 55 end if if a>=97 and a<=122 then b = Asc(b1) - 61 end if ' Select Case Asc(b1) ' Case 48 To 57 ' b = CLng(b1) ' Case 65 To 90 ' b = Asc(b1) - 55 ' Case 97 To 122 ' b = Asc(b1) - 61 ' End Select c = c + b * bt ^ (l - 1) l = l - 1 Next C62ToN10 = c End Function

下面是原文VB 的代码

Function test() Debug.Print N10toC62(576, 35) Debug.Print C62ToN10("gg", 35) End Function Function C62ToN10(ByVal strA As String, Optional ByVal bt As Byte) As Double '本函数用于将 2 8 16 36 62 进制字符串转换为 10 进制数值 '请注意,本函数的输入参数是区分大小写的,36进制以及以下,应该全部转换为大写 '下列进制,如果有必要,可以扩展到整个字符集, '也就是你只要输入一个字符,就可以代表上万位 If bt < 2 Or bt > 62 Then bt = 16 '默认为 16 进制 End If '2进制 0-1 '8进制 0-7 可以用 clng("&O71") 代替 '16进制 0-9 A-F 可以用 clng("&Hf1") 代替 '36进制 0-9 A-Z '62进制 0-9 A-Z a-z '都不对,就用16进制,如果输入数据不符合要求,则出错 If bt <= 36 Then strA = UCase(strA) '小于等于 36 进值时应该全部转换为大写 End If Dim b As Long Dim b1 As String Dim c As Double Dim l As Integer Dim i As Integer l = Len(strA) For i = 1 To l b1 = Mid(strA, i, 1) Select Case Asc(b1) Case 48 To 57 b = CLng(b1) Case 65 To 90 b = Asc(b1) - 55 Case 97 To 122 b = Asc(b1) - 61 End Select c = c + b * bt ^ (l - 1) l = l - 1 Next C62ToN10 = c End Function Function N10toC62(ByVal b As Long, Optional ByVal bt As Byte) As String '以下函数将10进制数值根据要求转换为 '2 8 16 36 62 进制字符串 '请注意,本函数的输出结果是区分大小写的 If bt < 2 Or bt > 62 Then bt = 16 '默认为 16 进制 End If '2进制 0-1 '8进制 0-7 可以用 OCT 函数代替 '16进制 0-9 A-F 可以用 HEX 函数代替 '36进制 0-9 A-Z '62进制 0-9 A-Z a-z '都不对,就用16进制,如果输入数据不符合要求,则出错 Dim a As Long Dim a1 As String Dim s As String Do a = b Mod bt Select Case a Case 0 To 9 a1 = CStr(a) Case 10 To 35 a1 = Chr(a + 55) Case 36 To 61 a1 = Chr(a + 61) End Select s = a1 & s b = b \ bt Loop Until b = 0 N10toC62 = s End Function

源代码转自:http://access911.net/fixhtm/71FAB61E13DCE8F3.htm

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值