zoukankan      html  css  js  c++  java
  • CRC16

    function CalCRC16(Buf: PByteArray; len: integer): Word;
    const
      table: 
    array[0..255of WORD = (
        $
    0000, $C0C1, $C181, $0140, $C301, $03C0, $0280, $C241, $C601, $06C0, $0780,
        $C741, $
    0500, $C5C1, $C481, $0440, $CC01, $0CC0, $0D80, $CD41, $0F00, $CFC1,
        $CE81, $
    0E40, $0A00, $CAC1, $CB81, $0B40, $C901, $09C0, $0880, $C841, $D801,
        $18C0, $
    1980, $D941, $1B00, $DBC1, $DA81, $1A40, $1E00, $DEC1, $DF81, $1F40,
        $DD01, $1DC0, $1C80, $DC41, $
    1400, $D4C1, $D581, $1540, $D701, $17C0, $1680,
        $D641, $D201, $12C0, $
    1380, $D341, $1100, $D1C1, $D081, $1040, $F001, $30C0,
        $
    3180, $F141, $3300, $F3C1, $F281, $3240, $3600, $F6C1, $F781, $3740, $F501,
        $35C0, $
    3480, $F441, $3C00, $FCC1, $FD81, $3D40, $FF01, $3FC0, $3E80, $FE41,
        $FA01, $3AC0, $3B80, $FB41, $
    3900, $F9C1, $F881, $3840, $2800, $E8C1, $E981,
        $
    2940, $EB01, $2BC0, $2A80, $EA41, $EE01, $2EC0, $2F80, $EF41, $2D00, $EDC1,
        $EC81, $2C40, $E401, $24C0, $
    2580, $E541, $2700, $E7C1, $E681, $2640, $2200,
        $E2C1, $E381, $
    2340, $E101, $21C0, $2080, $E041, $A001, $60C0, $6180, $A141,
        $
    6300, $A3C1, $A281, $6240, $6600, $A6C1, $A781, $6740, $A501, $65C0, $6480,
        $A441, $6C00, $ACC1, $AD81, $6D40, $AF01, $6FC0, $
    6E80, $AE41, $AA01, $6AC0,
        $6B80, $AB41, $
    6900, $A9C1, $A881, $6840, $7800, $B8C1, $B981, $7940, $BB01,
        $7BC0, $7A80, $BA41, $BE01, $7EC0, $7F80, $BF41, $7D00, $BDC1, $BC81, $7C40,
        $B401, $74C0, $
    7580, $B541, $7700, $B7C1, $B681, $7640, $7200, $B2C1, $B381,
        $
    7340, $B101, $71C0, $7080, $B041, $5000, $90C1, $9181, $5140, $9301, $53C0,
        $
    5280, $9241, $9601, $56C0, $5780, $9741, $5500, $95C1, $9481, $5440, $9C01,
        $5CC0, $5D80, $9D41, $5F00, $9FC1, $
    9E81, $5E40, $5A00, $9AC1, $9B81, $5B40,
        $
    9901, $59C0, $5880, $9841, $8801, $48C0, $4980, $8941, $4B00, $8BC1, $8A81,
        $4A40, $
    4E00, $8EC1, $8F81, $4F40, $8D01, $4DC0, $4C80, $8C41, $4400, $84C1,
        $
    8581, $4540, $8701, $47C0, $4680, $8641, $8201, $42C0, $4380, $8341, $4100,
        $81C1, $
    8081, $4040);
    var
      i: integer;
    begin
      Result :
    = $FFFF;
      
    for i := 0 to len - 1 do
        Result :
    = Hi(Result) xor Table[Lo(Result) xor Buf[i]];
    end;


    //测试
    var
      vBA: TByteArray;
    begin
      vBA[
    0] := 1;
      vBA[
    1] := 4;
      vBA[
    2] := 0;
      vBA[
    3] := 9;
      vBA[
    4] := 0;
      vBA[
    5] := 2;
      ShowMessage(IntToHex(CalCRC16(@vBA, 
    6), 2);
    end;
  • 相关阅读:
    ES6小点心第二弹——底部浮现弹窗
    ES6小点心之通用弹窗
    从输入URL到页面加载的过程?如何由一道题完善自己的前端知识体系!
    【quickhybrid】如何实现一个Hybrid框架
    【开源】canvas图像裁剪、压缩、旋转
    优雅的H5下拉刷新【minirefresh】
    前端筑基篇(一)->ajax跨域原理以及解决方案
    钉钉开放与商业化团队前端大量招人
    AJAX请求真的不安全么?谈谈Web安全与AJAX的关系。
    【quickhybrid】iOS端的项目实现
  • 原文地址:https://www.cnblogs.com/klaus/p/1815037.html
Copyright © 2011-2022 走看看