如何将36进制转换成16进制呢?希望大家帮个忙啊

解决方案 »

  1.   

    Function zh(x As String, m As Integer, n As Integer) As String
    Dim temp As Long
    Dim zht() As String
    Dim total As IntegerDim mmid As StringIf n > 36 Then
        MsgBox "本函数最多支持36进制的转换"
        Exit Function
    End If
    If m = 10 Then
        temp = CLng(x)
        
        Do
            total = total + 1
            temp = Int(temp / n)
        Loop Until temp = 0
        
        ReDim zht(total)
        temp = CLng(x)
        total = 0
        
        Do
            total = total + 1
            zht(total) = temp Mod n
            temp = Int(temp / n)
        Loop Until temp = 0
        
        For I = total To 1 Step -1
        zh = zh & sz(CStr(zht(I)))
        Next I
    Else
        For I = Len(x) To 1 Step -1
            mmid = Mid(x, Len(x) - I + 1, 1)
            If mmid = "1" Or mmid = "2" Or mmid = "3" Or mmid = "4" Or mmid = "5" Or mmid = "6" Or mmid = "7" Or mmid = "8" Or mmid = "9" Then
                total = total + CInt(mmid) * m ^ (I - 1)
            Else
                total = total + (Asc(mmid) - 55) * m ^ (I - 1)
            End If
        Next I
        zh = zh(CStr(total), 10, n)
    End IfEnd Function'将大于9的数转换成A---Z
    Function sz(y As String) As String
    If CInt(y) > 9 Then
        sz = Chr(CInt(y) + 55)
    Else
        sz = y
    End If
    End FunctionPrivate Sub Command1_Click()
    Dim b, c As Integer
    Dim a As Stringa = CStr(InputBox("输入要转换的数"))
    b = CInt(InputBox("输入此数当前的进制状态"))
    c = CInt(InputBox("输入转换后的进制状态"))
    MsgBox CStr(b) + " 进制数:" + a + " 转换成 " + CStr(c) + "进制数为:" + zh(a, CInt(b), c)
    End Sub
    找到一个vb的...呵呵,自己改成C#吧
      

  2.   


      private int Conver32(string s)
            {            char[] ch = s.ToCharArray();
                int t = 0;
                int power = 1;            for (int i = ch.Length - 1; i >= 0; i--)
                {
                    int n = 0;
                    if (ch[i] <= '9')
                        n = ch[i] - '0';
                    else
                        n = ch[i] - 'A' + 10;
                    if (n < 0 || n > 35)
                        throw new Exception("err");
                    t = t + power * n;
                    power = power * 36;            }            return t;
            }