求vb.net中的crc32类

Surpass 2008-12-27 10:31:50
RT
网上搜索了很多,但是没一个不出问题的。
...全文
92 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Surpass 2008-12-27
  • 打赏
  • 举报
回复
很好很强大
谢谢,结帖。
迈克揉索芙特 2008-12-27
  • 打赏
  • 举报
回复
嘿 手头正好有一个

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

1,066

社区成员

发帖
与我相关
我的任务
社区描述
VB 资源
社区管理员
  • 资源
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧