用函数Oct()将十进制位数 转换为八进制,用Hex()将十进制位 数转换为十六进制,不过值得注意的 是转换后数字型变为字符型。如果是 一个变量我们可以用如下代码完成十 进制向其他进制转换的目的。
dim Anum as long
Anum=& 010 '&0是八进制的 表示符号Anum自行转换为8。
Anum=&HA '&H是十六进制的 表示符号Anum自行转换为10。
如果我们有一个字符变量Astring 为八进制的或十六进制的,用Anum=” &0” + Astring和Anum=“&H”+Astring 能将它转换为十进制。VB中没有二进制的转换函 数,用如下代码可以实现十进制到二进 制的转换。
Option Explicit
Ptivate FunctiOn TenturnTwo (ByVal varNum As Long)
Dim returnString As String,ModNum As Integer
DO While varNum>0
ModNum=varNum Mod 2
varNum=varNum\2
returnString=Trim(Str (ModNum))+returnString
Loop
TenturnTwo=returnString
End Function
Private Function TwoturnTen (ByVal varString As String)
Dim Slen As Long,I As Long,
returnNum As Long
Slen=Len(varString)
For I=o To Slen-1
returmNum=returnNum +Val(Mid (varString,I+1,1))*(2^(Slen-I-1))
Next
TWoturnTen=returnNum
End Function

解决方案 »

  1.   

    [名称]           VB中的快速进制转换[语言种类]       Visual Basic[类别一]         算法[类别二]         空[类别三]         空[数据来源]       csdn/samuelxp(原作)[保存时间]       2002-04-21[关键字一]       数据[关键字二]       转换[关键字三]       进制[内容简介]       空[源代码内容]    有人说vb不能操作内存,效率低下,我不是太赞同.vb跟c比当然效率比较低下了,但是如果使用得当还是有不少的效率提高的.     在开发windows上的应用时(注意啊,不是驱动),理论上来说,用vb可以做任何软件.因为vb本身没有的,可以使用api,而win32 api时可以实现windows上的任何应用功能的.当然这和使用者的功力有很大的关系,如果c/c++的功力很好,你甚至可以用vb实现内存拷贝的功能,因为long类型可以做指针.     最近在做界面, 对vb有点研究, 给个例子吧.比如10进制转换2进制.     用vb的一般用除法这么做: 
    public function o2b(byval long nValue) as string
         dim nValueCopy as long
         dim nTmp as byte '商
        dim sReturn as string '返回值
        nValueCopy = nValue     '也有用nValue - 2^N 方式的,这里就不多说了     do while nValueCopy > 0
              nTmp = nValueCopy / 2           
              sReturn = cstr( nValueCopy - nTmp / 2 ) & sReturn  '反向累计
            nValueCopy = nTmp
         loop
      
         o2b = sReturn
    end function     而用c比较熟的人一般按位去做:
    public function o2b(byref long nValue) as string
         dim nBit( 0 to 7 ) as byte       ' 最小的单位是byte了,放掩码
        dim nByte( 1 to 4 ) as byte     ' 分解nValue到字节的
        dim nTmp as byte
         dim pValue as long                ' 指针
         dim sReturn as string             ' 返回值
        dim i as byte, j as byte     nBit(0) = 1            '00000001  
         nBit(1) = 2            '00000010
         nBit(2) = 4            '00000100
         nBit(3) = 8            '00001000
         nBit(4) = 16           '00010000
         nBit(5) = 32           '00100000
         nBit(6) = 64           '01000000
         nBit(7) = 128         '10000000     ' 取 nValue 的地址
         pValue = VarPtr( nValue )     ' win32 api, 将nValue的4个字节分别复制到nByte中,byref 就相当于指针
        CopyMemory( nByte(1), byref pValue, 4 )     for i = 4 to 1      '低字节在前
           for j = 7 to 0    '高位开始
             ' 方法一, 减法
             nTmp = 0
                  if nByte(i) > nBit(j) then
                      nByte = nByte(i) - nBit(j)
                      nTmp = 1           ' 这一位二进制是1
                  end if
                  sReturn = sReturn & cstr(nTmp)              ' 方法二,按位与 效率更高
            nTmp = 1
                  if ( not ( nByte(i) imp nBit(j) ) ) = nBit(j) then
                  ' 我没有找到vb按位与的函数,只有按位"同与"(不记得是不是)的imp
                       nTmp = 0
                  end if
                  sReturn = sReturn & cstr(nTmp)
         next j, i     o2b = sReturnend function
         以上代码保存于: SourceCode Explorer(源代码数据库)
               复制时间: 2002-12-06 11:33
               软件版本: 1.0.771
               软件作者: Shawls
               个人主页: Http://Shawls.Yeah.Net
                 E-Mail: [email protected]
                     QQ: 9181729
      

  2.   

    用函数Oct()将十进制位数 转换为八进制,用Hex()将十进制位 数转换为十六进制,不过值得注意的 是转换后数字型变为字符型。如果是 一个变量我们可以用如下代码完成十 进制向其他进制转换的目的。
    dim Anum as long
    Anum=& 010 '&0是八进制的 表示符号Anum自行转换为8。
    Anum=&HA '&H是十六进制的 表示符号Anum自行转换为10。
    如果我们有一个字符变量Astring 为八进制的或十六进制的,用Anum=” &0” + Astring和Anum=“&H”+Astring 能将它转换为十进制。
      

  3.   

    这不是普通的进制转换!
    VB的界面必须象触摸屏一样!包括数字可以任意点击在text中,从而按“转换键”
    时就可以达到转换的效果了!