VB中进制转换

'  用途:将十进制转化为二进制
'
 输入:Dec(十进制数)
'
 输入数据类型:Long
'
 输出:DEC_to_BIN(二进制数)
'
 输出数据类型:String
'
 输入的最大数为2147483647,输出最大数为1111111111111111111111111111111(31个1)
Public   Function  DEC_to_BIN(Dec  As   Long As   String
    DEC_to_BIN 
=   ""
    
Do   While  Dec  >   0
        DEC_to_BIN 
=  Dec  Mod   2   &  DEC_to_BIN
        Dec 
=  Dec    2
    
Loop
End Function  
'  用途:将二进制转化为十进制
'
 输入:Bin(二进制数)
'
 输入数据类型:String
'
 输出:BIN_to_DEC(十进制数)
'
 输出数据类型:Long
'
 输入的最大数为1111111111111111111111111111111(31个1),输出最大数为2147483647
Public   Function  BIN_to_DEC(ByVal Bin  As   String As   Long
    
Dim  i  As   Long
    
For  i  =   1   To   Len (Bin)
        BIN_to_DEC 
=  BIN_to_DEC  *   2   +  Val( Mid (Bin, i,  1 ))
    
Next  i
End Function

'  用途:将十六进制转化为二进制
'
 输入:Hex(十六进制数)
'
 输入数据类型:String
'
 输出:HEX_to_BIN(二进制数)
'
 输出数据类型:String
'
 输入的最大数为2147483647个字符
Public   Function  HEX_to_BIN(ByVal  Hex   As   String As   String
    
Dim  i  As   Long
    
Dim  B  As   String
    
    
Hex   =   UCase ( Hex )
    
For  i  =   1   To   Len ( Hex )
        
Select   Case   Mid ( Hex , i,  1 )
            
Case   " 0 " : B  =  B  &   " 0000 "
            
Case   " 1 " : B  =  B  &   " 0001 "
            
Case   " 2 " : B  =  B  &   " 0010 "
            
Case   " 3 " : B  =  B  &   " 0011 "
            
Case   " 4 " : B  =  B  &   " 0100 "
            
Case   " 5 " : B  =  B  &   " 0101 "
            
Case   " 6 " : B  =  B  &   " 0110 "
            
Case   " 7 " : B  =  B  &   " 0111 "
            
Case   " 8 " : B  =  B  &   " 1000 "
            
Case   " 9 " : B  =  B  &   " 1001 "
            
Case   " A " : B  =  B  &   " 1010 "
            
Case   " B " : B  =  B  &   " 1011 "
            
Case   " C " : B  =  B  &   " 1100 "
            
Case   " D " : B  =  B  &   " 1101 "
            
Case   " E " : B  =  B  &   " 1110 "
            
Case   " F " : B  =  B  &   " 1111 "
        
End   Select
    
Next  i
    
While   Left (B,  1 =   " 0 "
        B 
=   Right (B,  Len (B)  -   1 )
    
Wend
    HEX_to_BIN 
=  B
End Function

'  用途:将二进制转化为十六进制
'
 输入:Bin(二进制数)
'
 输入数据类型:String
'
 输出:BIN_to_HEX(十六进制数)
'
 输出数据类型:String
'
 输入的最大数为2147483647个字符
Public   Function  BIN_to_HEX(ByVal Bin  As   String As   String
    
Dim  i  As   Long
    
Dim  H  As   String
    
If   Len (Bin)  Mod   4   <>   0   Then
        Bin 
=   String ( 4   -   Len (Bin)  Mod   4 " 0 " &  Bin
    
End   If
    
    
For  i  =   1   To   Len (Bin) Step  4
        
Select   Case   Mid (Bin, i,  4 )
            
Case   " 0000 " : H  =  H  &   " 0 "
            
Case   " 0001 " : H  =  H  &   " 1 "
            
Case   " 0010 " : H  =  H  &   " 2 "
            
Case   " 0011 " : H  =  H  &   " 3 "
            
Case   " 0100 " : H  =  H  &   " 4 "
            
Case   " 0101 " : H  =  H  &   " 5 "
            
Case   " 0110 " : H  =  H  &   " 6 "
            
Case   " 0111 " : H  =  H  &   " 7 "
            
Case   " 1000 " : H  =  H  &   " 8 "
            
Case   " 1001 " : H  =  H  &   " 9 "
            
Case   " 1010 " : H  =  H  &   " A "
            
Case   " 1011 " : H  =  H  &   " B "
            
Case   " 1100 " : H  =  H  &   " C "
            
Case   " 1101 " : H  =  H  &   " D "
            
Case   " 1110 " : H  =  H  &   " E "
            
Case   " 1111 " : H  =  H  &   " F "
        
End   Select
    
Next  i
    
While   Left (H,  1 =   " 0 "
        H 
=   Right (H,  Len (H)  -   1 )
    
Wend
    BIN_to_HEX 
=  H
End Function

'  用途:将十六进制转化为十进制
'
 输入:Hex(十六进制数)
'
 输入数据类型:String
'
 输出:HEX_to_DEC(十进制数)
'
 输出数据类型:Long
'
 输入的最大数为7FFFFFFF,输出的最大数为2147483647
Public   Function  HEX_to_DEC(ByVal  Hex   As   String As   Long
    
Dim  i  As   Long
    
Dim  B  As   Long
    
    
Hex   =   UCase ( Hex )
    
For  i  =   1   To   Len ( Hex )
        
Select   Case   Mid ( Hex Len ( Hex -  i  +   1 1 )
            
Case   " 0 " : B  =  B  +   16   ^  (i  -   1 *   0
            
Case   " 1 " : B  =  B  +   16   ^  (i  -   1 *   1
            
Case   " 2 " : B  =  B  +   16   ^  (i  -   1 *   2
            
Case   " 3 " : B  =  B  +   16   ^  (i  -   1 *   3
            
Case   " 4 " : B  =  B  +   16   ^  (i  -   1 *   4
            
Case   " 5 " : B  =  B  +   16   ^  (i  -   1 *   5
            
Case   " 6 " : B  =  B  +   16   ^  (i  -   1 *   6
            
Case   " 7 " : B  =  B  +   16   ^  (i  -   1 *   7
            
Case   " 8 " : B  =  B  +   16   ^  (i  -   1 *   8
            
Case   " 9 " : B  =  B  +   16   ^  (i  -   1 *   9
            
Case   " A " : B  =  B  +   16   ^  (i  -   1 *   10
            
Case   " B " : B  =  B  +   16   ^  (i  -   1 *   11
            
Case   " C " : B  =  B  +   16   ^  (i  -   1 *   12
            
Case   " D " : B  =  B  +   16   ^  (i  -   1 *   13
            
Case   " E " : B  =  B  +   16   ^  (i  -   1 *   14
            
Case   " F " : B  =  B  +   16   ^  (i  -   1 *   15
        
End   Select
    
Next  i
    HEX_to_DEC 
=  B
End Function


'  用途:将十进制转化为十六进制
'
 输入:Dec(十进制数)
'
 输入数据类型:Long
'
 输出:DEC_to_HEX(十六进制数)
'
 输出数据类型:String
'
 输入的最大数为2147483647,输出最大数为7FFFFFFF
Public   Function  DEC_to_HEX(Dec  As   Long As   String
    
Dim  a  As   String
    DEC_to_HEX 
=   ""
    
Do   While  Dec  >   0
        a 
=   CStr (Dec  Mod   16 )
        
Select   Case  a
            
Case   " 10 " : a  =   " A "
            
Case   " 11 " : a  =   " B "
            
Case   " 12 " : a  =   " C "
            
Case   " 13 " : a  =   " D "
            
Case   " 14 " : a  =   " E "
            
Case   " 15 " : a  =   " F "
        
End   Select
        DEC_to_HEX 
=  a  &  DEC_to_HEX
        Dec 
=  Dec    16
    
Loop
End Function

'  用途:将十进制转化为八进制
'
 输入:Dec(十进制数)
'
 输入数据类型:Long
'
 输出:DEC_to_OCT(八进制数)
'
 输出数据类型:String
'
 输入的最大数为2147483647,输出最大数为17777777777
Public   Function  DEC_to_OCT(Dec  As   Long As   String
    DEC_to_OCT 
=   ""
    
Do   While  Dec  >   0
        DEC_to_OCT 
=  Dec  Mod   8   &  DEC_to_OCT
        Dec 
=  Dec    8
    
Loop
End Function

'  用途:将八进制转化为十进制
'
 输入:Oct(八进制数)
'
 输入数据类型:String
'
 输出:OCT_to_DEC(十进制数)
'
 输出数据类型:Long
'
 输入的最大数为17777777777,输出的最大数为2147483647
Public   Function  OCT_to_DEC(ByVal  Oct   As   String As   Long
    
Dim  i  As   Long
    
Dim  B  As   Long
    
    
For  i  =   1   To   Len ( Oct )
        
Select   Case   Mid ( Oct Len ( Oct -  i  +   1 1 )
            
Case   " 0 " : B  =  B  +   8   ^  (i  -   1 *   0
            
Case   " 1 " : B  =  B  +   8   ^  (i  -   1 *   1
            
Case   " 2 " : B  =  B  +   8   ^  (i  -   1 *   2
            
Case   " 3 " : B  =  B  +   8   ^  (i  -   1 *   3
            
Case   " 4 " : B  =  B  +   8   ^  (i  -   1 *   4
            
Case   " 5 " : B  =  B  +   8   ^  (i  -   1 *   5
            
Case   " 6 " : B  =  B  +   8   ^  (i  -   1 *   6
            
Case   " 7 " : B  =  B  +   8   ^  (i  -   1 *   7
        
End   Select
    
Next  i
    OCT_to_DEC 
=  B
End Function

'  用途:将二进制转化为八进制
'
 输入:Bin(二进制数)
'
 输入数据类型:String
'
 输出:BIN_to_OCT(八进制数)
'
 输出数据类型:String
'
 输入的最大数为2147483647个字符
Public   Function  BIN_to_OCT(ByVal Bin  As   String As   String
    
Dim  i  As   Long
    
Dim  H  As   String
    
If   Len (Bin)  Mod   3   <>   0   Then
        Bin 
=   String ( 3   -   Len (Bin)  Mod   3 " 0 " &  Bin
    
End   If
    
    
For  i  =   1   To   Len (Bin) Step  3
        
Select   Case   Mid (Bin, i,  3 )
            
Case   " 000 " : H  =  H  &   " 0 "
            
Case   " 001 " : H  =  H  &   " 1 "
            
Case   " 010 " : H  =  H  &   " 2 "
            
Case   " 011 " : H  =  H  &   " 3 "
            
Case   " 100 " : H  =  H  &   " 4 "
            
Case   " 101 " : H  =  H  &   " 5 "
            
Case   " 110 " : H  =  H  &   " 6 "
            
Case   " 111 " : H  =  H  &   " 7 "
        
End   Select
    
Next  i
    
While   Left (H,  1 =   " 0 "
        H 
=   Right (H,  Len (H)  -   1 )
    
Wend
    BIN_to_OCT 
=  H
End Function

'  用途:将八进制转化为二进制
'
 输入:Oct(八进制数)
'
 输入数据类型:String
'
 输出:OCT_to_BIN(二进制数)
'
 输出数据类型:String
'
 输入的最大数为2147483647个字符
Public   Function  OCT_to_BIN(ByVal  Oct   As   String As   String
    
Dim  i  As   Long
    
Dim  B  As   String
    
    
For  i  =   1   To   Len ( Oct )
        
Select   Case   Mid ( Oct , i,  1 )
            
Case   " 0 " : B  =  B  &   " 000 "
            
Case   " 1 " : B  =  B  &   " 001 "
            
Case   " 2 " : B  =  B  &   " 010 "
            
Case   " 3 " : B  =  B  &   " 011 "
            
Case   " 4 " : B  =  B  &   " 100 "
            
Case   " 5 " : B  =  B  &   " 101 "
            
Case   " 6 " : B  =  B  &   " 110 "
            
Case   " 7 " : B  =  B  &   " 111 "
        
End   Select
    
Next  i
    
While   Left (B,  1 =   " 0 "
        B 
=   Right (B,  Len (B)  -   1 )
    
Wend
    OCT_to_BIN 
=  B
End Function

'  用途:将八进制转化为十六进制
'
 输入:Oct(八进制数)
'
 输入数据类型:String
'
 输出:OCT_to_HEX(十六进制数)
'
 输出数据类型:String
'
 输入的最大数为2147483647个字符
Public   Function  OCT_to_HEX(ByVal  Oct   As   String As   String
    
Dim  Bin  As   String
    Bin 
=  OCT_to_BIN( Oct )
    OCT_to_HEX 
=  BIN_to_HEX(Bin)
End Function

'  用途:将十六进制转化为八进制
'
 输入:Hex(十六进制数)
'
 输入数据类型:String
'
 输出:HEX_to_OCT(八进制数)
'
 输出数据类型:String
'
 输入的最大数为2147483647个字符
Public   Function  HEX_to_OCT(ByVal  Hex   As   String As   String
    
Dim  Bin  As   String
    
Hex   =   UCase ( Hex )
    Bin 
=  HEX_to_BIN( Hex )
    HEX_to_OCT 
=  BIN_to_OCT(Bin)
End Function


VB自带函数:
十进制转八进制:
Oct (num)
十六进制转八进制:
oct ( " &H "   &  num)
十进制转十六进制:
hex (num)
八进制转十六进制:
hex ( " &O "   &  num)
 
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pzhan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值