'十六进制转换成十进制   
  Private   Function   HexToTen(ByVal   TheHex   As   Byte)   As   Byte   
          HexToTen   =   "&H"   &   TheHex   
  End   Function   
    
  '十进制转换成十六进制   
  Private   Function   TenToHex(ByVal   TheTen   As   Byte)   As   Byte   
          TenToHex   =   CByte(Hex(TheTen))   
  End   Function   
    
  '调用函数   
  Private   Sub   Command1_Click()   
          Dim   A   As   Byte   
          Dim   B   As   Byte   
          A   =   30   
          B   =   HexToTen(A)   
          MsgBox   B   
          A   =   TenToHex(B)   
          MsgBox   A   
  End   Sub其中A=数字都行,但是A=字母,比如0A,1E,FF等等  就会出错,请问下是怎么回事,谢谢各位了

解决方案 »

  1.   

    暂时手头没VB,我记得16进制转10进制直接用VAL函数就可以了:
    msgbox val("&Hff")
      

  2.   

    '十六进制转换成十进制  
    Private  Function  HexToTen(ByVal  TheHex  As  String)  As  long 
         HexToTen  =  "&H"  &  TheHex  
    End  Function  
        
    '十进制转换成十六进制  
    Private  Function  TenToHex(ByVal  TheTen  As  long)  As  String 
         TenToHex  =  Hex(TheTen)  
    End  Function  VB里Byte型是用十进制表示的。16进制要用字符串表示,否则会被编译器自动转换成10进制
      

  3.   

    '十六进制转换成十进制  
      Private  Function  HexToTen(ByVal  TheHex  As  string)  As  long  
              HexToTen  =  "&H"  &  TheHex
      End  Function  
        
      '十进制转换成十六进制  
      Private  Function  TenToHex(ByVal  TheTen  As  long)  As  string  
              TenToHex  =  Hex(TheTen)  'TenToHex返回值为字符串类型后,VB会自动转换类型的.
      End  Function  
        
      '调用函数  
      Private  Sub  Command1_Click()  
              Dim  A  As  string  '十六进制在VB里用字符串表示,没有相应的数据类型.
              Dim  B  As  long    '如果你的数值在一个字节以内(十进制255),那才用BYTE类型
              A  =  "200F"  
              B  =  HexToTen(A)  
              MsgBox  B  
              A  =  TenToHex(B)  
              MsgBox  A  
      End  Sub
      

  4.   

    '十六进制转换成十进制  
      Private  Function  HexToTen(ByVal  TheHex  As  string)  As  long  
              HexToTen  =  "&H"  &  TheHex
      End  Function  
        
      '十进制转换成十六进制  
      Private  Function  TenToHex(ByVal  TheTen  As  long)  As  string
              TenToHex  =  Hex(TheTen)  'TenToHex返回值为字符串类型后,VB会自动转换类型的.
      End  Function  
        
      '调用函数  
      Private  Sub  Command1_Click()  
              Dim  A  As  string  '十六进制在VB里用字符串表示,没有相应的数据类型.
              Dim  B  As  long    '如果你的数值在一个字节以内(十进制255),那才用BYTE类型
              A  =  "200F"  
              B  =  HexToTen(A)  
              MsgBox  B  
              A  =  TenToHex(B)  
              MsgBox  A  
      End  Sub
    代码格子里原来不能用颜色?
      

  5.   

    你对数制的理解有错误。
    在机内,所有的数组都是二进制。只有给人看的时候,才有所谓十进制、十六进制。在 VB 中,所有的数值类型,接受的都是十进制数。
    所谓十六进制,是字符串表达式。所以,从十进制转换成十六进制,是数值型变成字符串,从十六进制到十进制,则是字符串到数值。(当然,你也可以将十进制用字符串来表示。)
    但数值型到数值型,是不支持所有十六进制码的,至多是所谓 BCD 码,也就是不包含字母的十六进制数,如你原来的代码所处理的。  '十六进制转换成十进制
      Private Function HexToTen(ByVal TheHex As String) As Byte
              HexToTen = Val("&H" & TheHex)
      End Function
        
      '十进制转换成十六进制
      Private Function TenToHex(ByVal TheTen As Byte) As String
              TenToHex = Hex(TheTen)
      End Function
        
      '调用函数
      Private Sub Command1_Click()
              Dim A   As String
              Dim B   As Byte
              
              A = "1E"
              B = HexToTen(A)
              MsgBox B
              A = TenToHex(B)
              MsgBox A
      End Sub