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


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

Dim CRC32Table(255) As LongPrivate Sub Command1_Click() MsgBox crc32str("sysdzw") a = crc32fil...
  • sysdzw
  • sysdzw
  • 2010年03月09日 14:48
  • 1868

CRC32的校验函数与码表的生成函数

 此文章转载自:http://blog.csdn.net/hordak/archive/2006/01/17/581913.aspx因工作原因,前一阵子接触了CRC32校验问题,当时从网上找了一些实现...
  • yc_8301
  • yc_8301
  • 2007年10月08日 13:58
  • 1757

CRC32校验原理及实现

CRC即循环冗余校验(Cyclic Redundancy Check):是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。 CRC校验实用程序库:在数据存储和数据通...

CRC32算法(VB)

VERSION 1.0 CLASSBEGIN  MultiUse = -1  TrueENDAttribute VB_Name = "cCRC32"Attribute VB_GlobalNameSpa...

VB中使用表查询法获取CRC16

VB中CRC16获取方法1. CRCHi函数实现Function GetCRCHi(Ind As Long) As Byte GetCRCHi = Choose(Ind + 1, &H0, ...

循环冗余校验(CRC)算法入门引导

写给嵌入式程序员的循环冗余校验(CRC)算法入门引导 前言 CRC校验(循环冗余校验)是数据通讯中最常采用的校验方式。在嵌入式软件开发中,经常要用到CRC 算法对各种数据进行校验。因此,掌握基本的CR...

CRC校验代码整理

CRC

CRC校验代码与使用技巧

CRC校验代码与使用技巧 作者:彭学周(Favory.Peng)        在工业控制和通讯中,为了保证数据通讯的可靠性,我们会需要在通讯数据报文中加入校验码,以确保发送和接收到的数据的一致,...

crc16 校验代码C语言实现 和原理分析

typedef    unsigned char     uchar;  typedef    unsigned int      uint;  typedef    unsigned short...

使用C语言实现CRC校验的方法

原文转自:http://www.jb51.net/article/36832.htm 本篇文章是对使用C语言实现CRC校验的方法进行了详细的分析介绍,需要的朋友参考下 CRC(Cyclic Re...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:VB的CRC32校验代码
举报原因:
原因补充:

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