1、根据变量N的值生成N个1组成的字符串,而后根据此字符串得到此字符对应的数值。
   比如N=4  对应字符串为“1111”  这个“1111”对应的数值为15.

解决方案 »

  1.   

    生成字符串:private sub GetStr(byval N as long) as string
        getstr=string(n,"1")
    end sub
    得到二进制形式识别的值:private function strBinToLong(byval strBin as string) as long
        'strbin的长度不能超过31位,过了就会溢出.
        dim I as long,J as long,K as string    k=strreverse(strbin)
        
        for i = 0 To len(K) - 1
            j = j+iif(mid(K, i + 1, 1) = "1",2^i,0)       
        next
    end functon
      

  2.   

    二进制转10进制,我一直用的这个
    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 
    End Function
      

  3.   

    刚居然忘记自己进的是VB专题
    然后就用C语言写了个
    你看看 你要是不会转换到VB再说声
    #include "stdio.h"
    #include "math.h"
    void main(){
    int N=0,num=0,ans=0;
    printf("Please enter the number:");
    scanf("%d",&N);
    ans=pow(2,N)-1;
    while(N>0){
    N=N-1;
    num=num+pow(10,N);
    }
    printf("%d\n",num);
    printf("%d\n",ans);
    getch();
    }
      

  4.   


    Private Sub Command1_Click()
        Dim x As Byte, tmp As String
        x = InputBox("xxx", , 4)
        tmp = String(x, "1")
        MsgBox BIN_to_DEC(tmp)
        
    End Sub
    Public Function BIN_to_DEC(ByVal Bin As String) As Variant
    '******************************************************************
    ' 用途:将二进制转化为十进制
    ' 输入:Bin(二进制数)
    ' 输入数据类型:String
    ' 输出:BIN_to_DEC(十进制数)
    ' 输出数据类型:Decimal
    ' 输入的最大数为(96个1),输出最大数为"79228162514264337593543950335"
    ' by chiaboyzyq(猴哥) 2010-03-22
    '******************************************************************
        Dim i As Integer
        BIN_to_DEC = CDec(BIN_to_DEC)
        For i = 1 To Len(Bin)
            BIN_to_DEC = BIN_to_DEC * 2 + Mid(Bin, i, 1)
        Next i
       
    End Function
      

  5.   

    真不好意思,犯了几个低级错误......要是在IDE里打打就不会.......更正一下:生成字符串:private function GetStr(byval N as long) as string
        getstr=string(n,"1")
    end function
    得到二进制形式识别的值:private function strBinToLong(byval strBin as string) as long
        'strbin的长度不能超过31位,过了就会溢出.
        dim I as long,J as long,K as string    k=strreverse(strbin)
        
        for i = 0 To len(K) - 1
            j = j+iif(mid(K, i + 1, 1) = "1",2^i,0)       
        next
        strBinToLong=j
    end function
    溢出的原因是,VB6里没有无符号变量类型,因此将最高位作为符号位,所以输入的字符串最多31位.想要更多,就要把J的声明换成variant,再设置子类型为decxxxxx那个啥变量类型(太长了记不住.....),理论上有95位的长度了.
      

  6.   

    来了点兴趣,到IDE里试了一下,看看到底能处理多少位的二进制值.没想到大吃一惊.先上代码:Option Explicit
    '测试Decimal数据类型的
    Private Sub Command1_Click()
        Dim K As String
        
        K = String(1023, "1")
        
        Debug.Print Format(strBinToLong(K), "0")
    End SubPrivate Function strBinToLong(ByVal strBin As String) As Variant
        'strbin的长度不能超过1023位,过了就会溢出,
        Dim I As Long, J As Variant, K As String    K = StrReverse(strBin)          '反序
        
        For I = 0 To Len(K) - 1
            J = J + IIf(Mid(K, I + 1, 1) = "1", CDec(2) ^ I, 0)
        Next
        strBinToLong = J
    End Function
    没想到Variant居然有1024位的长度!!!
      

  7.   

    呃,原来是科学计数法的威力......感谢豆子大神在群里的解说....经过变量类型判断,是Double.....把8.98846567431158E+307展开,就是:89884656743115800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
      

  8.   

    Dim strTmp As String, intTmp As LongstrTmp = String(N, "1")
    intTmp = 2 ^ N - 1 
      

  9.   

    你应该是想得到指定二进制位的十进制数值吧,直接计算不就好了,为什么还要弄什么字符串?公式是这样:
    十进制数值 = 2 的 n 次方 - 1如:Function BitToAlgorism(Byval BitCount As Long) As Long
       BitToAlgorism = 2 ^ BitCount - 1
    End FunctionDim BitSize As Long
    BitSize = 4Msgbox BitSize & "个二进制位为1是十进制的:" & CStr(BitToAlgorism(BitSize)) & vbCrlf & _
           "二进制表示:" & String(BitSize, "1")