在另外一个帖子里答复的,把一个字符串形式的大数转换为字符串形式二进制输出。    Dim n As Variant
    Dim strOut As String
    n = CDec("289356276212170752")
     
    Do While n > 0
        If Int(n / 2) = n / 2 Then
            strOut = "0" & strOut
        Else
            strOut = "1" & strOut
        End If
        n = Int(n / 2)
    Loop
    MsgBox strOut

解决方案 »

  1.   

    任意数制转换'从十进制转成任意进制,Num 要转换的数字,NumS数制值,16进制,你可以填16,返回值是个数组
    Private Function FromDec(ByVal Num As Long, ByVal NumS As Integer) As Integer()
        Dim C As Integer, Result() As Integer
        Do Until Num = 0
            ReDim Preserve Result(C)
            Result(C) = Num Mod NumS
            C = C + 1
            Num = Num \ NumS
        Loop
        FromDec = Result
    End Function'从任意进制转成十进制 Num()任意进制数,是个数组,你可以从前一个函数里得到,NumS还是进制数,返回值是个十进制数
    Private Function ToDec(ByRef Num() As Integer, ByVal NumS As Integer) As Long
        Dim I As Integer, Result As Long
        For I = 0 To UBound(Num)
            Result = Result * NumS + Num(I)
        Next
        ToDec = Result
    End Function'生成一个进制串,Num就是转成任意进制后的数,是个数组,NumStr这个进制数的符号序列,比如十六进制的序列就是0123456789ABCDEF,不填的话出来(1)(2)这种样子的数
    Private Function ShowValue(ByRef Num() As Integer, Optional ByVal NumStr As String = "") As String
        Dim I As Integer, Result As String
        For I = 0 To UBound(Num)
            If Len(NumStr) > 0 Then
                Result = Mid(NumStr, Num(I) + 1, 1) & Result
            Else
                Result = "(" & Num(I) & ")" & Result
            End If
        Next
        ShowValue = Result
    End FunctionPrivate Sub Form_Load()
        Dim Arr() As Integer
        
        Arr = FromDec(634, 16) '把634转成16进制结果保存在Arr数组中
        Debug.Print ShowValue(Arr, "0123456789ABCDEF") '显示Arr数组中的16进制数
        
        Arr = FromDec(634, 2) '把64转成2进制结果保存在Arr数组中
        Debug.Print ShowValue(Arr, "01") '显示Arr数组中的2进制数
    End Sub