问题标签 [crc16]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1939 浏览

java - 从java中的char数组和字节数组中提取某些字节

我有一个包含十六进制值的 char 数组。它包含 6 个字节。我计算了这 6 个字节的 crc,函数返回 int 值。这是代码。

我的问题是

  1. 我使用 bytebuffer 将作为 int 获得的 crc 转换为字节。但是计算出的 crc 存储在 4 字节而不是 2 字节中。我计算了 CRC 16,但结果 crc 是 32 位。我认为这是因为我在 crc 计算中返回了“int”,并且在 java 中写入的 int 是 32 位。

    那么如何从字节缓冲区(crc_bytes)或计算出的int crc(crcresult)中只提取两个字节。

  2. 我已将“char buffer[]”的字节和计算出的 crc 的两个字节放入单字节数组中。我们如何追加

    在一个字节数组中。

上面代码的输出是

其中前 6 个字节是从 char 数组转换而来的字节,后 4 个字节是 crc。

0 投票
1 回答
648 浏览

crc - 高效实施 CRC16

我有一个程序,我知道它只能在非常特定的硬件上运行,所以我开始使用由 SSE4.2 指令集提供的 crc32,但现在我需要 crc16 用于不同的目的。有没有办法哄硬件给我crc16和SSE的crc32一样的性能?

谢谢

0 投票
3 回答
23853 浏览

c++ - CCITT CRC 16 位起始值 0xffff

我需要计算作为参数传递的数据的 CCITT 16 位校验和值以及长度。如果我用测试数据“123456789”填充我的数组 TempStr,使用长度不包括空终止字符的多项式 0x8408,我得到结果字符串 6E90(十六进制)。连同空终止字符,我得到 907A。当我将多项式换成 0x1201 时,我会得到带有和不带有终止字符的结果 29E2(Hex) 和 EFE8(Hex)。

我的问题是:我是否需要计算带有或不带有空终止字符的 CRC 以获得正确的值?我在算法中使用多项式 0x1201 还是反向多项式 0x8408?给定数据 0x29B1 的 CRC 是否正确?我需要正确的值来确定函数是否正常工作。计算这种特定 CRC 类型的算法是否正确?wData=(unsigned int)0xff & *pData++?? 如果有人可以向我解释出了什么问题以及如何解决我的问题,我将不胜感激。谢谢

这是使用并显示 calculate_CRC16 函数的代码:

这是 calculate_CRC16 函数:

0 投票
2 回答
9390 浏览

c - 计算校验和的 CRC 16 程序

我目前正在编写一个 CRC16 程序,它使用 CRC 16 polynomial 计算字符的 CRC X^16 + X^15 + X^2 + 1。程序应该从标准输入读取数据并以十六进制输出 16 位 CRC。尽管如此,当我执行程序时,我得到了错误的输出值。

这是我的代码:

输出:

(我在我的 txt 文件中阅读 123456789)

应该是,BB3D但我得到了7bda。有人可以帮我弄清楚我做错了什么吗?

0 投票
1 回答
1063 浏览

c# - 在程序中包含两个 CRC16 字节...?

我想通过 RS232 向控制机器人电机的 DSPIC33F 发送一些字节,DSPIC 必须按顺序接收 9 个字节,最后 2 个字节用于 CRC16,我在 C# 中工作,所以我如何计算要发送的 CRC 字节。

计算 CRC16 的程序,我在互联网上找到了它:

0 投票
1 回答
358 浏览

python - 继承和修改 __init__() 方法

我的实验室很快就会收到一些新设备,我正在编写自己的 modbus 脚本来自动化测试过程。到目前为止,这是我不得不用我有限的编程能力来应对的最复杂的任务。

我不想从头开始编写一个新类来管理命令,而是想创建一个EZTcomm继承其功能的类,bytearray并添加一个EZTcomm.crc属性来存储循环冗余校验和。

在阅读了这个问题和 docs.python.org 之后,我仍然对如何做到这一点感到困惑。似乎如果我想__init__()在我的新类中修改方法,那么我需要先显式调用bytearray.__init__(),但我不知道如何将EZTcomm调用中的参数传递给bytearray.__init__(),也不知道如何使用参数在bytearray.__init__()调用中作为变量来计算 CRC。

这是我迄今为止所写的:

这是否接近我想要的工作方式?我应该做些什么不同的事情?

0 投票
6 回答
33692 浏览

c - 如何使用基于表格的 CRC-16 代码?

我希望有人能够解释为什么我的 CRC-16 实现似乎无法在 Visual Studio 上正确运行?我从特定设备的手册中获得了算法,并自己编写了 int main()。当我尝试将参数传递给函数时总是出现“类型”错误,所以我怀疑格式有问题?这是代码附带的信息:

  • CRC名称:CRC-16
  • 宽度:16 位
  • 使用的多项式:1189(十六进制)
  • 种子值:FFFF(十六进制)
  • 反射输入/输出:否
  • 异或输出:否
  • 测试字符串“123456789”的CRC:5502(十六进制)

    /li>
0 投票
1 回答
835 浏览

excel - 语音选择代码

我对 Excel 中的 VBA 编码比较陌生。我正在尝试开发一个符合 PTI 的标签备份系统。我想在 excel 文件中建立语音选择代码。

我了解 VPC 计算器是免费下载的,但我试图让 VPC 在 Excel 文件中的 GTIN、LOT 或日期信息发生更改时自动更新。我一直在做大量的研究并了解将其应用于 JAVA 的公式。但我不知道如何将它实现为 Excel 的 VBA 格式。我知道人们之前已经能够创建 CRC-16 哈希计算,但我无法让它在与 PTI 语音选择计算器匹配的地方工作。

我的目标是 2 创建 2 个函数。=VPCS(GTIN,LOT,DATE) and =VPCL(GTIN,LOT,DATE). GTIN、批次和日期信息将从各自的单元格中提取出来。然后“VPCS”将收集前 2 个小数,而 VPCL 将收集相同信息的 2 个大数。虽然我不确定这是否可能,但如果可以做到,它将帮助许多其他使用这种软件的人。

有人认为这可以做到吗?另外,只是一个补充,如果有人知道任何学习VBA的好网站,请您发布一个链接吗?我正在尝试尽可能多地了解它。

0 投票
2 回答
1283 浏览

python - 尝试安装 crc16,未检测到 Python

我已经安装了 Python 2.7(64 位),我正在尝试安装crc16. 我下载了相关的crc16Python 2.7 安装文件:

https://pypi.python.org/pypi/crc16/0.1.1#downloads

但是,当我尝试安装它时,它说我没有安装 Python 2.7,并且在注册表中看不到它。查看我的 C 驱动器,我可以看到我绝对有一个 Python2.7 的文件夹。我有这个问题是因为crc16是 32 位吗?我怎样才能crc16正确安装?

0 投票
1 回答
13409 浏览

lookup - 带有查找表的 CRC 16-CCITT

所以我对CRC的了解以及Java实现是这样的:

例如,将初始消息作为 16 位多项式

这个得到另外 16 个 0 位

然后,有了除数,

我们在初始消息中每个“1”的开头对齐它,并在位之间进行异或,直到初始消息中不再有 1。在我们的示例中,总共将有 6 个 XOR。

CRC 将是我们消息的最后 16 位,或除法的其余部分。在这种情况下,101011110110000

我的问题是,如何使用查找表来实现这一点?有人可以向我展示一个关于如何计算多项式的数值示例吗?