Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 用for循环读取位时,我得到的是7位而不是8位,什么';这个密码怎么了_Vb.net_Visual Studio 2012 - Fatal编程技术网

Vb.net 用for循环读取位时,我得到的是7位而不是8位,什么';这个密码怎么了

Vb.net 用for循环读取位时,我得到的是7位而不是8位,什么';这个密码怎么了,vb.net,visual-studio-2012,Vb.net,Visual Studio 2012,输出: 文本框2:FalseTureFalse 文本框3:1111100 我的问题是为什么“TextBox 2”的第一个布尔值是“False”,而“TextBox 3”的第一个整数是1?“文本框2”有8个布尔值,而“文本框3”只有7位。显然,在“文本框3”中,第一位不存在。我哪里做错了…?代码中提供了注释。请在此说明 Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click Dim

输出: 文本框2:FalseTureFalse

文本框3:1111100

我的问题是为什么“TextBox 2”的第一个布尔值是“False”,而“TextBox 3”的第一个整数是1?“文本框2”有8个布尔值,而“文本框3”只有7位。显然,在“文本框3”中,第一位不存在。我哪里做错了…?代码中提供了注释。请在此说明

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click

    Dim array() As Byte = File.ReadAllBytes("D:\binfile.bin")

    Using memory As MemoryStream = New MemoryStream(array)
        Using reader As BinaryReader = New BinaryReader(memory)

            ba1 = New BitArray(array)

            Dim bit_set As Integer

            For i As Integer = 0 To 7

                'to view all 8 bits in boolean format
                TextBox2.Text = TextBox2.Text & ba1.Get(i)

                If ba1.Get(i) = False Then

                    boolean2bits = 0
                    'End If
                ElseIf ba1.Get(i) = True Then

                    boolean2bits = 1
                End If

                'to collect all 8 bits in integer format
                bit_set = bit_set & boolean2bits

                If (i = 7) Then
                    Exit For
                End If

            Next

           'to view collected bits in the text box
            TextBox3.Text = bit_set

        End Using
    End Using


End Sub

这仅仅是因为您将值
011111100
分配给整数变量
bit\u set
。但当然,作为一个整数,前导
0
并不重要,因此它会自动剥离,并简化为简单的
11111 00
,因为它毕竟是同一个数字


如果您不希望出于显示目的而丢失前导零,那么您可能不希望
bit\u set
Integer
类型。只需将at声明为
Dim bit\u set为String
,前导零将不会消失。

看起来您正在朝着最终目标取得一些进展

以下是一些需要理解和消化的片段:

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    ba1 = New BitArray(File.ReadAllBytes("D:\binfile.bin"))

    Dim bits As New List(Of String)
    Dim bools As New List(Of String)

    For i As Integer = 0 To 7
        bools.Add(ba1.Get(i).ToString)
        bits.Add(If(ba1.Get(i), "1", "0"))
    Next

    'to view collected bits/bools in the text box
    TextBox2.Text = String.Join(",", bools.ToArray)
    TextBox3.Text = String.Join("", bits.ToArray)
End Sub
备选版本2:

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    ba1 = New BitArray(File.ReadAllBytes("D:\binfile.bin"))

    TextBox2.Clear()
    TextBox3.Clear()
    For i As Integer = 0 To 7
        TextBox2.AppendText(ba1.Get(i).ToString & ",")
        TextBox3.AppendText(If(ba1.Get(i), "1", "0"))
    Next
End Sub
备选版本3:

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    ba1 = New BitArray(File.ReadAllBytes("D:\binfile.bin"))

    Dim bits As New System.Text.StringBuilder
    Dim bools As New System.Text.StringBuilder

    For i As Integer = 0 To 7
        bools.Append(ba1.Get(i).ToString & ",")
        bits.Append(If(ba1.Get(i), "1", "0"))
    Next

    TextBox2.Text = bools.ToString
    TextBox3.Text = bits.ToString
End Sub

你的类型选择太草率了,bit_set必须是字符串。在源代码文件顶部使用Option Strict On编程一段时间,让编译器帮助你正确选择。你好,我很高兴你被解锁。我注意到你接受了这个答案,然后不被接受?这是故意的吗?这是你的选择:)不,我不知道发生了什么,我不知道ght无意中再次点击了它:D.您的答案被完全接受了..非常完美..:)再次感谢。@Beatty_Girl:啊,别担心。也许您尝试了接受多个答案,但不幸的是,这无法在StackOverflow中完成。