输出: TextBox 2:FalseTrueTrueTrueTrueTrueFrfFalseFalse
TextBox 3:1111100
我的问题是为什么是" TextBox 2"的第一个布尔值?是"错误"和#34; TextBox 3"的第一个整数是1? " TextBox 2"有8个布尔,而#34; TextBox 3"只有7位。显然,在" TextBox 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
答案 0 :(得分:2)
只是因为您将值01111100
赋给整数变量bit_set
。但当然,作为整数,前导0
并不重要,因此它会被自动删除,并简化为1111100
,因为它毕竟是相同的数字。
如果您不想丢失前导零以用于显示目的,那么您可能不希望bit_set
属于Integer
类型。只需声明为Dim bit_set As String
,前导零不会消失。
答案 1 :(得分:1)
看起来你在迈向最终目标Pretty_Girl方面取得了一些进展。
以下是一些需要接受和消化的片段:
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