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


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

主题:crc16验证

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


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

甜老师,你的这种写法可以。
但是我的那个Js有问题。
他们给的是c的代码,我自己网上找的js,和他们的好像不一样。你看下能怎么把c的代码转成js呢?
C语言代码


图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20171007221003.png
图片点击可在新窗口打开查看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:c 代码.txt



要转成js:


图片点击可在新窗口打开查看此主题相关图片如下:js代码.png
图片点击可在新窗口打开查看

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:js代码.txt


[此贴子已经被作者于2017/10/7 22:12:22编辑过]

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


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

我里面的代码以及调试的结果是这样:
咱FT做的后台,第三方的软件做的界面

如果校验正确,两个白框的值应该一样,但是不一样。

图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20171007221507.png
图片点击可在新窗口打开查看

用网上的工具是一样的:

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20171007221820.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20171007221811.png
图片点击可在新窗口打开查看


[此贴子已经被作者于2017/10/7 22:19:16编辑过]

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


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

我用字符串和用hex算出来的值也不一样
刚才算出来是 adf8
现在用hex算是 bbb4

图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20171007222250.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2017/10/7 22:23:06编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | 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));


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


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

感恩!!
真心感谢FT老师的无私!!
可以了!!

图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20171008091416.png
图片点击可在新窗口打开查看


 回到顶部
总数 15 上一页 1 2