首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

求vb.net中的crc32种

2012-12-14 
求vb.net中的crc32类RT网上搜索了很多,但是没一个不出问题的。[最优解释]嘿 手头正好有一个Public Class CR

求vb.net中的crc32类
RT
网上搜索了很多,但是没一个不出问题的。
[最优解释]
嘿 手头正好有一个


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


[其他解释]
很好很强大
谢谢,结帖。

热点排行