算法 CRC-12

2024-01-09

我正在尝试对 12 位 CRC 和算法执行 crc_table,但总是得到错误的结果。

你能帮助我吗?要创建 crc 表,我尝试:

void crcInit(void)
{
    unsigned short  remainder;
    int    dividend;
    unsigned char  bit;

    for (dividend = 0; dividend < 256; ++dividend)
    {
        remainder = dividend << 4;

        for (bit = 8; bit > 0; --bit)
        {
            if (remainder & 0x800)
            {
                remainder = (remainder << 1) ^ 0x180D; //Polynomio of CRC-12
            }
            else
            {
                remainder = (remainder << 1);
            }
        }
       crcTable[dividend] = remainder;
    }

}

我更新了,CRC 算法是:

unsigned short crcFast(unsigned char const message[], int nBytes)
{
    unsigned short remainder = 0x0000;
    unsigned char  data;
    int  byte;


    /*
     * Divide the message by the polynomial, a byte at a time.
     */
    for (byte = 0; byte < nBytes; ++byte)
    {
        data = message[byte] ^ (remainder >> 4);
    remainder = crcTable[data] ^ (remainder << 8);
    }

    /*
     * The final remainder is the CRC.
     */
    return (remainder ^ 0);

}

但它不起作用......


这似乎不对:

if (remainder & 10000000)

看起来您希望这个数字是二进制的,但实际上它是十进制的。您应该使用十六进制文字 (0x80)。

这个数字以及您所做的移位的大小似乎也存在问题:此测试应检查余数的高位是否已设置。由于您正在执行 12 位 CRC,因此掩码应为 0x800(二进制 100000000000)。上面的转变可能应该是:

remainder = dividend << 4;

设置余数的最左边 8 位。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

算法 CRC-12 的相关文章

随机推荐

  • CreateGraphics 和 Paint 事件的 Graphics 对象有什么区别?

    有人可以解释一下两者之间的区别吗Graphics传递的对象pevent Graphics以及通过调用返回的那个this CreateGraphics 每当一个Paint事件被引发 你会得到一个Graphics要绘制的对象 这被传递为peve
  • 如何在 Node.js 中强制重置套接字?

    我从 Node js 应用程序收到 read ECONNRESET 错误 可能是客户端或服务器连接 我不确定 作为修复这些问题的一部分 我想做一些本地测试 最好为其设置自动化测试 我想编写一个节点客户端和服务器 在连接建立后立即对其进行硬重
  • 无法在 Android 上获取 expo 推送令牌

    我正在构建一个 React 本机应用程序 它基于Expo https expo io 我还想结合利用 Expo 的推送通知功能Firebase 实时数据库 https firebase google com docs database 我基
  • 如何检查 javascript var 中是否存在文本

    我有一个包含一些文本的变量 我想检查一下文本中是否有某个单词 例子 var myString This is some random text 我想检查一下 随机 这个词是否存在 谢谢你的帮助 如果您想专门测试 随机 一词 可以使用如下正则
  • 刷新布局并更新数据

    我有以下显示数据网格的 pyqt 代码 我能够单击一个字母 打开一个文本输入框并成功将数据保存到网格并在终端中打印更新的数据 我努力了update and repaint 但他们什么也没做 并打电话给createLayout 方法抛出错误Q
  • 浏览存储库中标记版本的列表?

    我正在尝试检查 OpenSSL 1 0 2a 而不是 Master OpenSSL 已标记版本 我正在尝试浏览它们以确定实际名称是什么 我知道它们有 1 0 0 1 0 1 和 1 0 2 但它们的命名更复杂 根据OpenSSL Git 存
  • 如何通过svn Eclipse插件解决树冲突

    我最近在我的eclipse中安装了svn插件 我想知道如何通过它解决我的项目的树冲突 等待您宝贵的回复 右键单击项目 选择Team gt Show Tree Conflict gt Mark as Resolved
  • Android 5.0.2 - 短信广播接收器 - 无法使其工作

    我正在小米红米Note 3上进行测试 我需要的很简单 注册广播接收器以接收传入的短信 收到消息后 只需阅读即可 看来无论我如何尝试 我都无法获得接收器注册 从谷歌文档来看 从 4 4 开始 任何应用程序都不应该吞下该事件 并且每个监听的应用
  • EnableViewState 在 DropDownList 中不起作用

    default aspx 页面有一个DropDownList仅当它不是时才在后面的代码中填充postback 当选择一个值时 将调用一个方法来填充Literal与选定的值 它按预期工作 问题是当我将页面设置为不EnableViewState
  • 如何让console.log输出getter结果而不是字符串“[Getter/Setter]”?

    在此代码中 function Cls this id 0 Object defineProperty this id get function return this id set function id this id id enumer
  • .NET 主要版本和发布分支的 git 分支策略

    对于包含多个类库的 NET 项目 我当前使用以下 git 分支策略 feature 1 master v PR v release 7 0 v I branch
  • iPhone 7/7plus 上的空 snapshotView

    我的第一个问题是 最近我将 Xcode 更新到 8 并且resizableSnapshotView该方法在某些模拟器上无法正常工作 snapshotView 在所有 iOS9 10 的测试设备和 iPhone6s 下的模拟器上都运行良好 但
  • Qt 安卓.获取设备屏幕分辨率

    我正在 Android 设备上使用 qt 5 3 进行开发 我无法获取屏幕分辨率 对于旧的 qt 5 版本 此代码有效 QScreen screen QApplication screens at 0 largh screen gt ava
  • 通过合并日期时间和日期列上的两个 DF 查找昨天的高价

    我正在尝试合并两个 df 其中一个 df 有一个datetime列 另一个只有一个date柱子 我的申请是找到昨天的high使用 OHLC 数据集的价格 我在下面附加了一些起始代码 但我将描述我正在寻找的内容 鉴于这种intraday数据集
  • 从 Git 中删除过时的提交

    我已经进行了一些测试提交 以测试提交挂钩 并且始终将索引重置为我最后一次正常提交 现在这些过时的提交仍然存在 gt git reflog fcdabf7 HEAD 0 reset moving to fcdabf7e01845d6f000f
  • 如何在javascript中完全获取具有重复键的JSON

    我试图从 url 获取 JSON 但在响应对象中重复的键被删除 有没有什么方法可以完全获取它而不删除重复的键 这是我的js代码 document ready function var s getJSON new json console l
  • 关键帧不是关键帧? AV_PKT_FLAG_KEY 未解码为 AV_PICTURE_TYPE_I

    解码标志中包含 AV PKT FLAG KEY 的数据包后 我原本期望得到 I 帧 但结果却得到了 P 帧 拨打电话后 avcodec decode video2 codecCtx frame frameFinished packet mp
  • iOS 呈现动画为“推”的视图控制器(左右动画)

    目前 我有一个视图控制器呈现其他视图控制器 我想做的是重新创建推送视图控制器时使用的默认动画 我目前的做法是 FirstViewController IBAction private func push sender AnyObject l
  • 如何捕获 ASCX 控件(而不是隐藏代码)引发的异常?

    我有一个很大的 ASPX 页面 其中包含许多 ASCX 控件 如果控件引发异常 它应该记录异常并仅隐藏其自身 所有其他控件仍应呈现 如何处理从前端文件 ASCX 而不是代码隐藏 引发的各个 ASCX 的异常 例如 尝试使用以下方法引用无效属
  • 算法 CRC-12

    我正在尝试对 12 位 CRC 和算法执行 crc table 但总是得到错误的结果 你能帮助我吗 要创建 crc 表 我尝试 void crcInit void unsigned short remainder int dividend