VBS任意进制转换(实现PHP的base_convert函数)

标签: , , , , , ,

昨天在临风小筑上看到一篇《ASP/VBS任意进制转换》,代码写得怎么样暂且不评论,但函数名称起得实在是不敢恭维,看名称根本不知道这两个函数是做什么的。

我参考 PHP 的 base_convert 函数的 C 语言源码,实现 VBS 版的任意进制转换函数 base_convert。有了这个函数,就可以很轻松的进行二、八、十、十六进制转换。

Function base_convert(number, frombase, tobase)
    'Author: Demon
    'Date: 2011/12/17
    'Website: http://demon.tw

    Dim digits, num, ptr, i, n, c
    digits = "0123456789abcdefghijklmnopqrstuvwxyz"
    
    If frombase < 2 Or frombase > 36 Then
        Err.Raise vbObjectError + 7575,,"Invalid from base"
    End If
    
    If tobase < 2 Or tobase > 36 Then
        Err.Raise vbObjectError + 7575,,"Invalid to base"
    End If
    
    number = CStr(number) : n = Len(number)
    
    For i = 1 To n
        c = Mid(number, i, 1)
        
        If c >= "0" And c <= "9" Then
            c = c - "0"
        ElseIf c >= "A" And c <= "Z" Then
            c = Asc(c) - Asc("A") + 10
        ElseIf c >= "a" And c <= "z" Then
            c = Asc(c) - Asc("a") + 10
        Else
            c = frombase
        End If
        
        If c < frombase Then
            num = num * frombase + c
        End If
    Next
        
    Do
        ptr = ptr & Mid(digits, (num Mod tobase + 1), 1)
        num = num \ tobase
    Loop While num
    
    base_convert = StrReverse(ptr)
End Function

WScript.Echo base_convert("A37334", 16, 2)
WScript.Echo base_convert("http://demon.tw", 16, 10)

随机文章:

  1. NDS上的FC模拟器nesDS
  2. VBS统计字符串全部字符出现的次数并排序
  3. VbsEdit 5.6.1新增功能
  4. 64位系统VBS调用32位COM组件
  5. VB编程实现XP风格

留下回复