`

[转]AS3类:CRC32校验类

阅读更多
http://www.cnitblog.com/flashlizi/archive/2007/09/10/33198.html


此类是根据java.util.zip中CRC32类写的AS3版CRC32校验类。

/** 
 * @name:CRC32(CRC32校验类)
 * @usage:根据java.util.zip中CRC32类写的AS3版CRC32校验类
 * @author:flashlizi
 * @update:2007/06/05
 * @example:
var crc=new CRC32();
var ba:ByteArray=new ByteArray();
var str="123";
ba.writeUTFBytes(str);
crc.update(ba,0,3);
trace(crc.getValue().toString(16).toUpperCase());
 */
package com.flashrek.utils{
    import flash.utils.ByteArray;
    public class CRC32 {
        private var crc32:uint;
        private static  var CRCTable:Array=initCRCTable();
/** 
 * @usage 更新指定的字节数组的CRC32
 * @param buffer:指定的字节数组,arg:arg[0]为offset偏移量,arg[1]为length
指定长度
 * 这里可以只指定一个参数buffer,也可以offset,length都指定
 * @return void
 */
        public function update(buffer:ByteArray,arg):void {
            var offset:int=arg[0]?arg[0]:0;
            var length:int=arg[1]?arg[1]:buffer.length;
            var crc:uint = ~crc32;
            for (var i:int=offset; i < length; i++) {
                crc = CRCTable[(crc ^ buffer[i]) & 0xFF] ^ (crc >>> 8);
            }
            crc32 = ~crc;
        }
/** 
 * @usage 
 * @param 
 * @return CRC32值
 */
        public function getValue():uint {
            return crc32 & 0xFFFFFFFF;
        }
/** 
 * @usage 将CRC32重置为初始值
 * @param 
 * @return void
 */
        public function reset():void {
            crc32 = 0;
        }
/** 
 * @usage 初始化 CRC table, 长度为256.
 * @param crcTable:CRC table
 * @return 初始化的crcTable,使用标准poly值:0xEDB88320
 */
        private static function initCRCTable():Array {
            var crcTable:Array=new Array(256);
            for (var i:int=0; i < 256; i++) {
                var crc:uint=i;
                for (var j:int=0; j < 8; j++) {
                    crc=(crc & 1)?(crc >>> 1) ^ 0xEDB88320:(crc >>> 1);
                }
                crcTable[i]=crc;
            }
            return crcTable;
        }
    }
}
分享到:
评论

相关推荐

    CRC32校验码算法

    CRC32校验码算法,由于项目需要,解决一个流媒体文件的crc32校验码。网上查了很多的资料,发现了此校验码和生成多项式以及算法本身都有关系。对于不同类型的文件所使用的多项式以及算法不同,对于不同的生成多项式所...

    ORACLE CRC32函数

    在Oracle中,`CRC32`函数利用了Java语言提供的`CRC32`类来实现该功能。 #### 三、实现步骤 1. **创建Java类**:首先,我们需要在Oracle数据库中创建一个Java源代码,定义名为`crc32_class`的类。这个类包含了两个...

    vb6.0+ CRC 8 位校验

    最后得到的余数即为CRC校验码,附加到原始数据后面。在接收端,同样使用该多项式对数据(包括校验码)进行运算,如果计算结果的余数为0,那么通常认为数据在传输过程中没有错误。 在VB6.0中实现CRC8位校验,首先...

    VB.net CRC16校验

    运算的结果就是CRC校验码,它会被附加到原始数据的末尾,形成一个带有校验信息的新数据包。 在VB.NET中,实现CRC16校验通常涉及以下几个步骤: 1. **定义生成多项式**:首先,你需要选择一个16位的生成多项式,...

    crc16校验dll(含vb调用示例)

    然而,它不能检测所有错误,尤其是多比特错误,因此在更复杂的应用场景下,可能会结合其他更强大的校验机制,如CRC32或者更高级的错误检测和纠正编码,如奇偶校验、海明码等。 总之,CRC16校验DLL结合VB调用示例,...

    VB版CRC32编码函数

    CRC32(Cyclic Redundancy Check,循环冗余校验)是一种广泛应用于数据通信和存储领域的错误检测方法。在VB(Visual Basic)环境中实现CRC32编码函数,可以帮助开发者在程序中集成这一重要的校验功能。以下是关于CRC...

    VB编写CRC校验程序

    ### VB编写CRC校验程序详解 #### 一、CRC校验简介 CRC(Cyclic Redundancy Check)即循环冗余校验,是一种基于二进制运算的数据校验方法,被广泛应用于通信领域中,用于检测数据在传输过程中是否发生了错误。随着...

    vbCRC32_crc32_visualbasic_

    例如,VB6时期,由于内置函数不支持CRC32,开发者通常会编写自定义函数,而现在,在VB.NET环境下,可以利用.NET Framework提供的System.IO.Compression.CRC32类来快速实现。 以下是一个简单的VB.NET示例,展示如何...

    VB下CRC16校验码

    CRC16是CRC校验的一种,它通过16位的校验码来确保数据的完整性。在VB(Visual Basic)环境中实现CRC16计算,可以提供一种简单而有效的错误检测手段。 在VB中,CRC16的计算通常涉及以下几个关键步骤: 1. **定义CRC...

    CRC16 校验函数 vb.net

    根据给定的文件信息,我们可以总结出以下关于“CRC16 校验函数 vb.net”的详细知识点: ### CRC16 校验算法简介 CRC(Cyclic Redundancy Check)循环冗余校验是一种用于检测数据传输错误的有效方法。CRC16 是其中...

    modus CRC16校验很实用

    modus CRC16校验很实用 Modbus协议中的CRC16校验工具及源码详解 Modbus是一种常用的工业通信协议,它广泛应用于各种自动化设备、机器人、计算机网络等领域。为了确保数据传输的正确性和可靠性,Modbus协议中引入了...

    vb_CRC16校验码

    它通过将数据视为一个二进制数,然后用一个预定义的16位CRC多项式对其进行除法运算,得到的余数即为CRC校验码。这个16位的CRC值会被附加到原始数据后面,接收端再进行同样的运算,如果计算出的CRC值与接收到的CRC值...

    小工具-CRC校验计算工具V1.00

    小工具--CRC校验计算工具V1.00适合搬砖工哈哈哈哈QT5.9.0开发,后面再来增加东西,脑壳痛

    vbCRC16校验校验

    3. 最终CRC寄存器的值就是CRC16校验码。 在VB中,可以使用位操作符(如`And`、`Or`、`Xor`、`Shl`等)来实现这些操作。例如,可以定义一个`CRC16`函数,接受一个字节数组作为参数,返回16位的CRC值。代码示例如下:...

    PB用于CRC16校验的函数方法

    CRC字典列表数据通常用于快速查找CRC校验值,这对于提高CRC校验的速度非常关键。 ```powerbuilder globaltype s_crcdict from structure string crcstr[] integer num endtype ``` 这里定义了一个名为`s_crcdict...

    vb crc校验代码

    ### vb crc校验代码知识点详解 #### 一、CRC校验简介 CRC(Cyclic Redundancy Check)循环冗余校验是一种数据传输检错功能,对数据进行多项式除法(模2除法),得到一个余数后加在数据后面发送出去。接收端收到...

    VB.net 2012 获取文件校验 MD5/SHE1/CRC32

    SHA-1则对应于SHA1Managed类,CRC32则可能需要自定义实现,因为.NET Framework标准库并未提供内置的CRC32实现。 以下是一个简单的VB.NET代码示例,演示如何使用MD5算法获取文件的哈希值: ```vbnet Imports System...

    精彩编程与编程技巧-VB下如何编写CRC校验程序...

    ### 精彩编程与编程技巧:VB下如何编写CRC校验程序 #### 知识点一:CRC校验的基本概念 CRC(Cyclic Redundancy Check)是一种用于检测数据传输错误的有效方法,广泛应用于通信领域。其原理是通过一个预定义的...

    精简的modbus crc16算法 vb6

    在Modbus通信协议中,CRC(Cyclic Redundancy Check,循环冗余校验)是一种常用的错误检测机制,用于确保数据在传输过程中没有错误。在VB6(Visual Basic 6)环境中开发485 Modbus通讯上位机时,CRC16算法是不可或缺...

    CRC.rar_CRC VB_crc

    6. **文件中的CRC校验**:在压缩包文件(如RAR、ZIP)中,每个文件或文件夹都会有一个CRC校验值,用于验证解压后的数据是否与原始数据一致。如果CRC校验失败,通常意味着数据在传输或存储过程中出现了错误。 7. **...

Global site tag (gtag.js) - Google Analytics