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


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

主题:crc16验证2

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16181 威望:0 精华:0 注册:2013/9/1 8:09:00
crc16验证2  发帖心情 Post By:2017/10/14 15:22:00 [只看该作者]

老师,
条码:6901849257652
380eee13363930313834393235373635320a
CRC16func(str) :EE13
ret.characteristic.value.substring(4, 8)).toUpperCase() :EE13  
这样可以相等!
但下面的这个就不行
条码:6932394905163
380e0944363933323339343930353136330a
CRC16func(str) :944
ret.characteristic.value.substring(4, 8)).toUpperCase() :0944
他自动把 0 给去掉了,那怎么处理呢?

甜老师给的代码如下:
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;
}
 

[此贴子已经被作者于2017/10/15 22:47:59编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16181 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2017/10/15 22:48:00 [只看该作者]

甜老师,麻烦你再帮忙看下。。。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/10/15 23:08:00 [只看该作者]

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

 

改成

 

var num = nAccum.toString(16).toUpperCase();

return ('0000'+num).slice(-4)

[此贴子已经被作者于2017/10/15 23:07:52编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16181 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2017/10/16 14:02:00 [只看该作者]

甜老师厉害了!!高手!!

 回到顶部