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