Foxtable(狐表)用户栏目专家坐堂 → crc16验证


  共有1826人关注过本帖树形打印复制链接

主题:crc16验证

帅哥哟,离线,有人找我吗?
有点甜
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/10/7 17:03:00 [显示全部帖子]

1、你扫描枪扫描的内容是什么?

 

2、Buffer就是一个数组,你把扫描的内容转换成一个数组即可。


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/10/7 17:17:00 [显示全部帖子]

你扫描的字符要如何转换成数组?两个字符分割?规则是什么?

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/10/7 17:29:00 [显示全部帖子]

你直接填入扫描的内容,能否运算得到结果?

 

或者说,你如何填入数据后可以运算得到结果?


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/10/7 17:41:00 [显示全部帖子]

一般是把你扫描到的字符分拆成数组然后校验的,关键是看规则是怎么分拆,比如一个字符、两个字符。

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/10/7 18:12:00 [显示全部帖子]

 试试

 

var buf =  "6949907605380abc12345";

var crc16 = crcCheck(buf, buf.length);


console.log("crc16[%j]=%j",buf.length,crc16.toString(16) );


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/10/7 23:42:00 [显示全部帖子]

1、js这样写

 

function CRC16func(AllDATA) {

    var cnCRC_CCITT = 0x1021;

    var i = -1,
    j = -1;

    var nData = -1,
    nAccum = -1,
    nYAccum = -1;

    var Table_CRC = [];

    var aSize = AllDATA.length;

    for (i = 0; i < 256; i++) {

        nData = C16func.call(this, i, 8);

        nAccum = 0;

        for (j = 0; j < 8; j++) {

            if ((nData ^ nAccum) & 0x8000) {

                nAccum = C16func.call(this, nAccum, 1);

                nAccum = nAccum ^ cnCRC_CCITT;

            } else {

                nAccum = C16func.call(this, nAccum, 1);

                nAccum = nAccum;

            }

            nData = C16func.call(this, nData, 1);

        }

        Table_CRC[i] = nAccum;

    }

    nAccum = 0;

    for (i = 0; i < aSize; i++) {

        nYAccum = nAccum;

        nAccum = C16func.call(this, nAccum, 8);

        nAccum = nAccum ^ Table_CRC[(nYAccum >>> 8) ^ (AllDATA.charCodeAt(i))];

    }

    return nAccum.toString(16).toUpperCase();

}

function C16func(cData, cLen) {

    if (((cData << cLen).toString(2).length > 16) && (cData.toString(2).length <= 16)) {

        cData = (cData << cLen).toString(2).substr((cData << cLen).toString(2).length - 16, 16);

        cData = parseInt(cData, 2);

    } else {

        cData = cData << cLen;

    }

    return cData;

}

 

 

2、这样调用

 

var str = "12345678";
alert(CRC16func(str));


 回到顶部