BitArray.And VB.Net 中的方法
BitArray.And method in VB.Net
我正在学习 VB.Net 并面临来自以下代码的意外结果 - 运行 Visual Studio 中的这个:
有4个BitArrays: bit1, bit2, bit3 和 bit4
bit1 的值为 60
bit2 的值为 13
位 3 = 位 1 和(位 2)
bit4 = bit1 或(bit2)
每个数组的字节显示是正确的 - 但是,当使用 CopyTo 将 BitArray 转换为整数数组时,bit4 returns 值 13 应为 61。如果注释掉 bit3 部分,则 bit4 然后 returns 61 的正确值。如果更改 bit3 = bit1 Xor(bit2) 而不是“And”,则 bit4 也 returns 正确值 - 我不确定我在这里遗漏了什么......
谢谢您的帮助!
以下是代码:
Imports System.Globalization
Imports System.Reflection.Emit
Imports System.Runtime.Remoting.Channels
Imports System.Security.Cryptography.X509Certificates
Module Module1
Sub Main()
'BitArray
Dim bit1 As BitArray = New BitArray(8)
Dim z() As Byte = {60}
bit1 = New BitArray(z)
Dim bi As Integer
For bi = 0 To bit1.Count - 1
Console.Write("{0} ", bit1(bi))
Next bi
Console.WriteLine()
Dim intArray(0) As Integer
bit1.CopyTo(intArray, 0)
Console.WriteLine("The bit1 value is: {0}", intArray(0))
Dim bit2 As BitArray = New BitArray(8)
Dim z2() As Byte = {13}
bit2 = New BitArray(z2)
For bi = 0 To bit2.Count - 1
Console.Write($"{bit2(bi)} ")
Next bi
Console.WriteLine()
Dim intArray2(0) As Integer
bit2.CopyTo(intArray2, 0)
Console.WriteLine("The bit2 value is: {0}", intArray2(0))
Dim bit3 As BitArray = New BitArray(8)
bit3 = bit1.And(bit2)
Console.WriteLine($"bit3 length: {bit3.Length}")
For bi = 0 To bit3.Count - 1
Console.Write($"{bit3(bi)} ")
Next bi
Console.WriteLine()
Dim intArray3(0) As Integer
bit3.CopyTo(intArray3, 0)
Console.WriteLine($"The bit3 (And) value is {intArray3(0)}")
Dim bit4 As BitArray = New BitArray(8)
bit4 = bit1.Or(bit2)
For bi = 0 To bit4.Count - 1
Console.Write($"{bit4(bi)} ")
Next bi
Console.WriteLine()
Dim intArray4(0) As Integer
bit4.CopyTo(intArray4, 0)
Console.WriteLine($"The bit4 (Or) value is {intArray4(0)}")
Console.ReadLine()
End Sub
End Module
作为doc状态
The current BitArray object will be modified to store the result of the bitwise AND operation.
所以 bit3
作为 bit1
和 bit2
的结果的正确方法是将 bit1
值克隆到 bit3
,然后调用And
bit3
方法
Dim bit3 As BitArray = bit1.Clone()
bit3.And(bit2)
同样处理 bit4
Dim bit4 As BitArray = bit1.Clone()
bit4.Or(bit2)
无关,但
Dim bit1 As BitArray = New BitArray(8)
是多余的,您将立即使用
丢弃该数组
bit1 = New BitArray(z)
所以你实际上可以写它
Dim bit1 As BitArray = New BitArray(z)
作为 BitArray 的替代品,
Dim z As Byte
Dim z1 As Byte = 60
Dim z2 As Byte = 13
z = z1 And z2
z = z1 Or z2
z = z1 Xor z2
我正在学习 VB.Net 并面临来自以下代码的意外结果 - 运行 Visual Studio 中的这个:
有4个BitArrays: bit1, bit2, bit3 和 bit4 bit1 的值为 60 bit2 的值为 13 位 3 = 位 1 和(位 2) bit4 = bit1 或(bit2) 每个数组的字节显示是正确的 - 但是,当使用 CopyTo 将 BitArray 转换为整数数组时,bit4 returns 值 13 应为 61。如果注释掉 bit3 部分,则 bit4 然后 returns 61 的正确值。如果更改 bit3 = bit1 Xor(bit2) 而不是“And”,则 bit4 也 returns 正确值 - 我不确定我在这里遗漏了什么...... 谢谢您的帮助! 以下是代码:
Imports System.Globalization
Imports System.Reflection.Emit
Imports System.Runtime.Remoting.Channels
Imports System.Security.Cryptography.X509Certificates
Module Module1
Sub Main()
'BitArray
Dim bit1 As BitArray = New BitArray(8)
Dim z() As Byte = {60}
bit1 = New BitArray(z)
Dim bi As Integer
For bi = 0 To bit1.Count - 1
Console.Write("{0} ", bit1(bi))
Next bi
Console.WriteLine()
Dim intArray(0) As Integer
bit1.CopyTo(intArray, 0)
Console.WriteLine("The bit1 value is: {0}", intArray(0))
Dim bit2 As BitArray = New BitArray(8)
Dim z2() As Byte = {13}
bit2 = New BitArray(z2)
For bi = 0 To bit2.Count - 1
Console.Write($"{bit2(bi)} ")
Next bi
Console.WriteLine()
Dim intArray2(0) As Integer
bit2.CopyTo(intArray2, 0)
Console.WriteLine("The bit2 value is: {0}", intArray2(0))
Dim bit3 As BitArray = New BitArray(8)
bit3 = bit1.And(bit2)
Console.WriteLine($"bit3 length: {bit3.Length}")
For bi = 0 To bit3.Count - 1
Console.Write($"{bit3(bi)} ")
Next bi
Console.WriteLine()
Dim intArray3(0) As Integer
bit3.CopyTo(intArray3, 0)
Console.WriteLine($"The bit3 (And) value is {intArray3(0)}")
Dim bit4 As BitArray = New BitArray(8)
bit4 = bit1.Or(bit2)
For bi = 0 To bit4.Count - 1
Console.Write($"{bit4(bi)} ")
Next bi
Console.WriteLine()
Dim intArray4(0) As Integer
bit4.CopyTo(intArray4, 0)
Console.WriteLine($"The bit4 (Or) value is {intArray4(0)}")
Console.ReadLine()
End Sub
End Module
作为doc状态
The current BitArray object will be modified to store the result of the bitwise AND operation.
所以 bit3
作为 bit1
和 bit2
的结果的正确方法是将 bit1
值克隆到 bit3
,然后调用And
bit3
Dim bit3 As BitArray = bit1.Clone()
bit3.And(bit2)
同样处理 bit4
Dim bit4 As BitArray = bit1.Clone()
bit4.Or(bit2)
无关,但
Dim bit1 As BitArray = New BitArray(8)
是多余的,您将立即使用
丢弃该数组bit1 = New BitArray(z)
所以你实际上可以写它
Dim bit1 As BitArray = New BitArray(z)
作为 BitArray 的替代品,
Dim z As Byte
Dim z1 As Byte = 60
Dim z2 As Byte = 13
z = z1 And z2
z = z1 Or z2
z = z1 Xor z2