2013-03-21 1 views
2

Есть ли какая-либо функция или пример для VB.NET для вычисления CRC32 строки или байт-массива?Вычислить CRC32 строкового или байтового массива

+1

является [это] (http://stackoverflow.com/questions/8128/how-do-i-calculate-crc32-of-a-string), что вам нужно. ? –

+0

На самом деле я смотрел его раньше, но не из них работает, и большинство из этих ссылок было для вычисления CRC32 файла – Shahriyar

+1

«не из них работает» Действительно, что не так с ними? – Magnus

ответ

9

Используйте это:

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 
+0

Работал хорошо, спасибо – Shahriyar

+0

Маленький и сладкий – Khan

 Смежные вопросы

  • Нет связанных вопросов^_^