我正在学习 VB.Net 并面临以下代码的意外结果 - 在 Visual Studio 中运行它:
有 4 个位数组:bit1、bit2、bit3 和 bit4 bit1 的值为 60 bit2 的值为 13 bit3 = bit1 And(bit2) bit4 = bit1 Or(bit2) 每个 Array 的字节显示是正确的 - 但是,当使用 CopyTo要将 BitArray 转换为 Integer Array,bit4 在应该为 61 时返回值 13。如果注释掉 bit3 部分,则 bit4 返回正确的值 61。如果更改 bit3 = bit1 Xor(bit2) 而不是“And”,bit4还返回正确的值-我不确定我在这里缺少什么.....谢谢您的帮助!以下是代码:
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