VB的CRC32校验代码

原创 2015年07月11日 10:31:13

这几天编写了CRC32的VB代码,经测试于网上的CRC32校验验证结果完全相同。

Option Explicit
    Dim crc32Table(255) As Long
    
Private Sub Command1_Click()
    Dim strHex As String
    Dim i As Long
    Dim buffer() As Byte
    strHex = "AA 44 12 1C 2A 00 02 20 48 00 00 00 9D B4 29 07 B0 40 F8 20 00 00 10 00 00 00 01 00 00 00 00 00 32 00 00 00 18 8E 3D F1 67 B2 43 40 86 C3 7B 0F 36 30 5D 40 00 00 60 95 E5 38 03 40 00 00 00 00 3D 00 00 00 6D 87 D4 3B 6D 87 D4 3B 60 61 7F 3C 30 30 30 34 00 00 80 3F 00 FC 6C 46 11 11 11 11 00 00 00 4B"
    'strHex = "AA 44 12 1C 2A 00 02 20 48 00 00 00 9D B4 29 07 10 4A F8 20 00 00 10 00 00 00 01 00 00 00 00 00 32 00 00 00 65 E4 5A DD 67 B2 43 40 56 19 C3 51 35 30 5D 40 00 00 E0 CC D9 26 03 40 00 00 00 00 3D 00 00 00 69 8C DA 3B 69 8C DA 3B B6 44 83 3C 30 30 30 34 00 00 00 00 00 2C 6D 46 11 11 11 11 00 00 00 4B"
    ReDim buffer(Len(strHex) \ 3)
    For i = 1 To Len(strHex) Step 3
        buffer((i - 1) / 3) = Val("&H" & Left(Mid(strHex, i, 3), 2))
    Next
'    Open "C:\ts.bpm" For Binary As #1
'        Put #1, , buffer
'    Close #1
    Text1 = Right("00" & Hex(crc32byt(buffer)), 8)
    'MsgBox "Ok!"
End Sub

Public Function crc32byt(buf() As Byte) As Long
    Dim i As Long, iCRC As Long, lngA As Long, ret As Long
    Dim b() As Byte
    Dim bytT As Byte, bytC As Byte
    b = buf 'StrConv(item, vbFromUnicode)
    iCRC = &HFFFFFFFF
    InitCrc32
    For i = 0 To UBound(b)
        bytC = b(i)
        bytT = (iCRC And &HFF) Xor bytC
        lngA = ((iCRC And &HFFFFFF00) / &H100) And &HFFFFFF
        iCRC = lngA Xor crc32Table(bytT)
    Next
    ret = iCRC Xor &HFFFFFFFF
    crc32byt = ret
End Function

'CRC32 Table此段代码是CRC32表
Public Function InitCrc32(Optional ByVal Seed As Long = &HEDB88320, Optional ByVal Precondition As Long = &HFFFFFFFF) As Long
    Dim i As Integer, j As Integer, Crc32 As Long, Temp As Long
    For i = 0 To 255
        Crc32 = i
        For j = 0 To 7
            Temp = ((Crc32 And &HFFFFFFFE) / &H2) And &H7FFFFFFF
            If (Crc32 And &H1) Then Crc32 = Temp Xor Seed Else Crc32 = Temp
        Next
        crc32Table(i) = Crc32
    Next
    InitCrc32 = Precondition
End Function


VB程序设计入门基础

-
  • 1970年01月01日 08:00

VB6获得文件或字符串CRC32值的方法

Dim CRC32Table(255) As LongPrivate Sub Command1_Click() MsgBox crc32str("sysdzw") a = crc32fil...
  • sysdzw
  • sysdzw
  • 2010-03-09 14:48:00
  • 1987

CRC32算法(VB)

VERSION 1.0 CLASSBEGIN  MultiUse = -1  TrueENDAttribute VB_Name = "cCRC32"Attribute VB_GlobalNameSpa...
  • killer000777
  • killer000777
  • 2007-01-07 19:03:00
  • 1871

vb.net版CRC16校验源码——VS2008

  • 2011年09月13日 15:24
  • 61KB
  • 下载

VB6的串口通信程序,还有crc校验

  • 2016年02月02日 21:22
  • 21KB
  • 下载

VB6.0写的计算CRC校验和的小程序

  • 2014年12月15日 13:45
  • 77KB
  • 下载

CRC12 ,16 ,32校验方法

CRC12 ,16 ,32校验方法 VB.NET语言版 1、CRC-16  CRC-16码由两个字节构成,在开始时CRC寄存器的每一位都预置为1,然后把CRC寄存器与8-bit的数据进行异或,之...
  • wl58796351
  • wl58796351
  • 2011-10-18 08:17:44
  • 2300

CRC校验和CRC各种算法

1、简介 CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是...
  • chenlei_525
  • chenlei_525
  • 2016-05-27 11:22:50
  • 6106

Java查表法实现CRC32校验算法

Java查表法实现CRC32校验,生产环境验证无问题。
  • zxfrdas
  • zxfrdas
  • 2016-04-10 00:14:48
  • 1493

vb与485设备的串口通讯程序,含16位crc校验子程序

  • 2012年11月23日 23:22
  • 7KB
  • 下载
收藏助手
不良信息举报
您举报文章:VB的CRC32校验代码
举报原因:
原因补充:

(最多只允许输入30个字)