Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.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 为什么CRC-32代码不能在Visual Basic上工作?_Vb.net_Crc32 - Fatal编程技术网

Vb.net 为什么CRC-32代码不能在Visual Basic上工作?

Vb.net 为什么CRC-32代码不能在Visual Basic上工作?,vb.net,crc32,Vb.net,Crc32,我对VB.NET非常陌生,我正试图在Visual Studio 2013中实现一些东西来计算字节数组中的CRC-32字节。我遇到了各种各样的例子,有些是在VB.NET中,有些是在C#中。尽管如此,我并没有成功地让它们工作,甚至没有测试它们 例如,从这个网站上找到的这个“Mangu”代码中考虑这个特殊的代码。我将其复制并粘贴到windows表单模板中,出现以下错误: 错误BC30456:“转储”不是“UInteger”的成员 我道歉,因为我可能正在做一些非常愚蠢的事情,但我感谢任何帮助或提示 Pr

我对VB.NET非常陌生,我正试图在Visual Studio 2013中实现一些东西来计算字节数组中的CRC-32字节。我遇到了各种各样的例子,有些是在VB.NET中,有些是在C#中。尽管如此,我并没有成功地让它们工作,甚至没有测试它们

例如,从这个网站上找到的这个“Mangu”代码中考虑这个特殊的代码。我将其复制并粘贴到windows表单模板中,出现以下错误:

错误BC30456:“转储”不是“UInteger”的成员

我道歉,因为我可能正在做一些非常愚蠢的事情,但我感谢任何帮助或提示

Private Sub Main()
   Crc32.ComputeChecksum(Encoding.UTF8.GetBytes("Some string")).Dump()
End Sub

Public Class Crc32
   Shared table As UInteger()

   Shared Sub New()
      Dim poly As UInteger = &Hedb88320UI
      table = New UInteger(255) {}
      Dim temp As UInteger = 0
      For i As UInteger = 0 To table.Length - 1
         temp = i
         For j As Integer = 8 To 1 Step -1
            If (temp And 1) = 1 Then
               temp = CUInt((temp >> 1) Xor poly)
            Else
               temp >>= 1
            End If
         Next
         table(i) = temp
      Next
   End Sub

   Public Shared Function ComputeChecksum(bytes As Byte()) As UInteger
      Dim crc As UInteger = &HffffffffUI
      For i As Integer = 0 To bytes.Length - 1
         Dim index As Byte = CByte(((crc) And &Hff) Xor bytes(i))
         crc = CUInt((crc >> 8) Xor table(index))
      Next
      Return Not crc
   End Function
End Class

如果您是从其他地方复制的,那么我猜
Dump
是一种扩展方法,可以执行类似
Debug.Print

尝试替换此:

Crc32.ComputeChecksum(Encoding.UTF8.GetBytes("Some string")).Dump()
为此:

Debug.Print(Crc32.ComputeChecksum(Encoding.UTF8.GetBytes("Some string")))

Dump()似乎只用于输出结果(用于测试?)。其余代码是否编译?此代码不会编译,因为“Dump”不是属于UInteger的函数。你能提供原始代码的链接吗?您可能复制了不正确或不完整的内容。(或者作者只是想将其作为伪代码)如果您对代码理解不够,无法重写Main中的行,因此不需要Dump方法,您可能不应该使用它。请将链接添加到获取代码的网站,好吗?我想应该有一个链接,因为你说的是“这个网站”?这是网页底部的网站,你可以找到“Magnus”的代码:谢谢Matt。您的修改消除了错误消息,但我看不到代码产生的结果。我可以看到正在返回的CRC值吗?它应该打印到输出(或者可能是即时)窗口(如果您正在运行调试构建)中。我希望在即时或输出窗口中看到CRC字节,但显然没有。这是另一个问题(我肯定以前有人问过,所以只需谷歌一下),要查看校验和,只需在
MsgBox