【发布时间】:2014-07-23 05:35:41
【问题描述】:
我对 VB.NET 很陌生,我正在尝试在 Visual Studio 2013 中实现一些东西来计算字节数组的 CRC-32 字节。我遇到过各种各样的例子,一些在 VB.NET 中,一些在 C# 中。尽管如此,我还没有成功地让它们工作甚至测试它们。
例如,考虑一下我在这个网站上找到的“Mangus”中的这个特定代码。我将其复制并粘贴到 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() 似乎只是为了输出结果(用于测试?)。其余代码是否编译?
-
这段代码将无法编译,因为“Dump”不是属于 UInteger 的函数。你能提供原始代码的链接吗?您复制的内容可能不正确或不完整。 (或者作者只是想让它成为伪代码)
-
如果您对代码的理解程度不足以重写 Main 中的行,因此它不需要 Dump 方法,您可能不应该使用它。
-
您能否将链接添加到您获得代码的网站?我想应该有一个链接,因为你说“这个网站”?
-
这是页面底部的网站,您可以找到“Magnus”的代码:stackoverflow.com/questions/15553697/…