变量长于字符串

时间:2014-03-15 10:31:18

标签: vb.net string encryption

我对vb.net并不是那么好,但我遇到了一个问题。 我必须将一个字符串转换为二进制(我已经完成的事情),但在那之后,我必须通过将其与另一个字符串组合来加密字符串,也将其转换为二进制。

问题:我在字符串y()的帮助下弄明白这个结果,但结果的维度大于32位,我得到错误:{"索引超出了数组的范围。 "}

我怎么解决这个问题? 感谢

Dim preluare As String = TextBox5.Text    ' the binary text i have to encrypt
    Dim inter() As Char = preluare.ToCharArray
    Dim b As Integer = TextBox5.Text.Count

    Dim x As String = TextBox15.Text  ' the key of encryption
    Dim y() As Char = x.ToCharArray
    Dim bb As Integer = TextBox15.Text.Count

'密钥必须与初始文本

相同
    If b > x.Count Then
        While x.Count < b
            x = x + x
        End While
    End If


    If x.Count > b Then
        Dim w As Integer = x.Count
        x = x.Trim().Substring(w - b)
    End If

&#39; xor操作

    For i As Integer = 0 To b - 1
        If inter(i) = "0" Then
            'MsgBox(i)
            If y(i) = "0" Then ' THIS IS WHERE I GET THE ERROR
                TextBox10.Text = TextBox10.Text + "0"
            Else
                TextBox10.Text = TextBox10.Text + "1"
            End If
        Else
            If inter(i) = "1" Then
                If y(i) = "0" Then 
                    TextBox10.Text = TextBox10.Text + "1"
                Else
                    TextBox10.Text = TextBox10.Text + "0"
                End If
            End If
        End If
    Next

2 个答案:

答案 0 :(得分:0)

如果您确定错误是因为y()的大小大于32位整数,那么如何将64位整数数据类型用作计数器:

For i As Int64 = 0 To b - 1
    .......
    .......
Next

答案 1 :(得分:0)

你可以使用无符号变量 uint16,uint32 ...