RT
网上搜索了很多,但是没一个不出问题的。

解决方案 »

  1.   

    嘿 手头正好有一个Public Class CRC32
        Private Shared CRC32Table() As Integer
        Private Const BUFFER_SIZE As Integer = 1024    Public Shared Function GetCRC32(ByVal file As String) As Integer
            Return GetCRC32(file, System.Text.Encoding.Default)
        End Function    Public Shared Function GetCRC32(ByVal file As String, ByVal encoding As System.Text.Encoding) As Integer
            Dim sr As System.IO.StreamReader = New System.IO.StreamReader(file, encoding)
            Dim Result As Integer = GetCRC32(sr.BaseStream)
            sr.Close()
            Return Result
        End Function    Public Shared Function GetCRC32(ByRef stream As System.IO.Stream) As Integer
            Dim crc32Result As Integer
            crc32Result = &HFFFFFFFF        Dim buffer(BUFFER_SIZE) As Byte
            Dim readSize As Integer = BUFFER_SIZE        Dim count As Integer = stream.Read(buffer, 0, readSize)
            Dim i As Integer
            Dim iLookup As Integer
            Dim tot As Integer = 0        Do While (count > 0)
                For i = 0 To count - 1
                    iLookup = (crc32Result And &HFF) Xor buffer(i)
                    crc32Result = ((crc32Result And &HFFFFFF00) \ &H100) And &HFFFFFF
                    crc32Result = crc32Result Xor CRC32Table(iLookup)
                Next i
                count = stream.Read(buffer, 0, readSize)
            Loop        Return Not (crc32Result)
        End Function    Shared Sub New()
            Dim dwPolynomial As Integer = &HEDB88320
            Dim i As Integer, j As Integer        ReDim CRC32Table(256)
            Dim dwCrc As Integer        For i = 0 To 255
                dwCrc = i
                For j = 8 To 1 Step -1
                    If (dwCrc And 1) Then
                        dwCrc = ((dwCrc And &HFFFFFFFE) \ 2&) And &H7FFFFFFF
                        dwCrc = dwCrc Xor dwPolynomial
                    Else
                        dwCrc = ((dwCrc And &HFFFFFFFE) \ 2&) And &H7FFFFFFF
                    End If
                Next j
                CRC32Table(i) = dwCrc
            Next i
        End Sub
    End Class