【发布时间】:2015-10-02 03:57:12
【问题描述】:
我借用了一个转换器类,它将 BitArray 转换为 Integer,以便我可以将其存储在注册表中。 BitArray 是 32 个单比特,所以 New BitArray(32)。
问题是我收到一个错误 Destination array was not long enough on the CopyTo.
有没有办法解决这个问题?
Public Shared Function ToNumeral(binary As BitArray) As Integer
If binary Is Nothing Then
Throw New ArgumentNullException("Binary conversion error: Field is empty")
End If
Dim result = New Integer(0) {}
binary.CopyTo(result, 0)
Return result(0)
End Function
【问题讨论】:
-
如果你检查
binary.Count,你得到什么值? -
请发Minimal, Complete, and Verifiable example 以便我们重现问题。我无法用您的代码重现错误。
-
我能给出的唯一例子是在主模块中,声明了 Public PrintOpts As New BitArray(33, True)。转换将在选择带有 CheckedListBox 控件的表单后进行,然后按下按钮。按下按钮的代码: Dim RegKey = "HKEY_CURRENT_USER\SOFTWARE\MyApp\Options" For i = 1 To 32 Main.PrintOpts(i) = CheckedListBox1.GetItemCheckState(i - 1) Next My.Computer.Registry.SetValue(RegKey, " PrintOpts", BinaryConverter.ToNumeral(Main.PrintOpts)) Close()
-
如果您确实使用
New BitArray(32)初始化了位数组,那么计数不会是 33。在调用您的 @ 之前出了点问题987654325@ 功能。无法为您提供帮助,因为我们看不到它。 -
33 岁,我记错了。
标签: vb.net