天道酬勤,学无止境

crc16

CRC16 in Python

How do I calculate CRC16 in Python? In Perl I would write something like: use Digest::CRC "crc16"; $result = crc16($str); How do I do same thing in Python?

2021-06-24 08:11:17    分类:问答    python   perl   crc   crc16

Calculation of CCITT standard CRC with polynomial x^16 + x^12 + x^5 + 1 in Java

I need help with calculating of CCITT standard CRC with polynomial x^16 + x^12 + x^5 + 1 (0x1081) in Java. I have tried many examples on the internet but every one of them returns other values than the ones in the example. For example for this array [0xFC] [05] [11] the result needs to be [27] [56]. Using this code: public static void main(String[] args) { byte[] array = new byte[3]; array[0] = (byte) 0xFC; array[1] = (byte) 0x05; array[2] = (byte) 0x11; // array[3] = (byte) 0x00; // array[4] = (byte) 0x00; System.out.println(Integer.toHexString(crc16(array))); } private static final int

2021-06-03 21:12:42    分类:问答    java   calculator   polynomial-math   crc16

CRC-ITU calculation in c#

I'm new to C#. I need to calculate CRC-ITU for the packet recieved from GPS devices. There is C code provided in the documentation but i don't know how to port it to C#, anyone could help me? here is CRC-ITU algorithm in C : static const U16 crctab16[] = { 0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf, 0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7, 0x1081, 0x0108, 0x3393, 0x221a, 0x56a5, 0x472c, 0x75b7, 0x643e, 0x9cc9, 0x8d40, 0xbfdb, 0xae52, 0xdaed, 0xcb64, 0xf9ff, 0xe876, 0x2102, 0x308b, 0x0210, 0x1399, 0x6726, 0x76af, 0x4434, 0x55bd, 0xad4a, 0xbcc3, 0x8e58

2021-06-03 17:22:37    分类:问答    c#   gps   crc16

CCITT CRC 16 Bit Start Value 0xffff

I need to calculate a CCITT 16 bit checksum value for data passed as a parameter together with the length. If I fill my array TempStr with the test data "123456789", use the polynomial 0x8408 with the length excluding the null termination character, I get the result string 6E90(Hex). Together with the null termination char I get 907A. When I swap out the polynomial to 0x1201 then I get results 29E2(Hex) and EFE8(Hex) with and without termination character. My questions are: Do I need to calculate the CRC with or without the null termination character to obtain the correct value? Do I use the

2021-06-03 00:54:14    分类:问答    c++   checksum   crc   crc16

为 CRC16 函数将 C 转换为 PHP(Convert C to PHP for CRC16 Function)

问题 我需要帮助将 C 代码转换为 PHP。 以下是C代码: static const U16 crctab16[] = { 0x0000, 0x1189, ... }; U16 GetCrc16(const U8* pData, int nLength) { U16 fcs = 0xffff; while(nLength > 0) { fcs = (fcs >> 8) ^ crctab16[fcs ^ *pData) & 0xff]; nLength--; pData++; } return ~fcs; } 到目前为止,我已经成功转换了以下 PHP 代码: $crctab16 = array(0x0000, 0x1189, ... ); function getCrc16($pData) { $hexdata = pack('H*',$pData); $nLength = strlen($hexdata); $fcs = 0xFFFF; $pos = 0; while($nLength > 0) { $fcs = ($fcs >> 8) ^ $crctab16[($fcs ^ $hexdata[$pos]) & 0xFF]; $nLength--; $pos++; } return ~$fcs; } 我试图运行以下代码: $str = "0A1344010400010005"

2021-06-02 22:12:37    分类:技术分享    php   c   crc16

如何在 PHP HEX 中计算 CRC16 CCITT?(How to calculate CRC16 CCITT in PHP HEX?)

问题 我正在尝试使用 PHP CRC16 CCITT 函数来计算校验和。 设备向我发送了一个包含校验和的 PACKET: 10 00 00 00 00 00 00 00 12 51 09 08 00 18 00 04 02 14 00 0c 00 0c 02 1c 00 02 00 00 00 00 00 7 00 a 0 校验和在最后: a0 77 我试过使用 如何在php中计算crc16 为 CRC16 函数将 C 转换为 PHP 没有成功,CRC 16 计算返回: E6 F4而不是a0 77 查找时,我返回了正确的十六进制信息: 100000000000000012510908001800040214000c000c021c0002000000000000 在网站 http://www.lammertbies.nl/comm/info/crc-calculation.html 上,但我无法重现它。 (确保选择输入类型为HEX) 你能帮我弄清楚如何获得十六进制值字符串的 crc16 CCITT 100000000000000012510908001800040214000c000c021c0002000000000000 我正在寻找校验和a0 77 回答1 我能够使用如下实现生成相同的校验和: define('CRC16POLYN', 0x1021); function

2021-06-01 13:02:08    分类:技术分享    php   hex   crc   crc16

计算CRC初始值,而不是将CRC附加到有效载荷(Calculating CRC initial value instead of appending the CRC to payload)

问题 我已经实现的大多数CRC都是将计算出的CRC值附加到消息(有效负载)上,并在所有字节(包括在内)之后在接收器处检查结果是否为零。 CRC值通过CRC寄存器馈入。 显然,这是一个非常标准的方法。 现在,我想使用另一种方法: 根据有效负载计算一个值。 在消息字节(有效负载)通过CRC寄存器馈送之前,将该值用作CRC寄存器的初始值,这样,在馈送有效负载的最后一个字节之后的结果将为零。 这样做的最佳方法是什么? 是否有一个好主意或一些指向何处进行更深入的探索? ps:为什么我要这样做? 在某些应用程序(ROM)中,由于数据存储在ROM地址空间的末尾,因此我无法追加数据。 因此,我想预加载CRC寄存器或将该值添加到消息中。 回答1 我现在为上述问题编写了一个解决方案,该解决方案比我最初想象的要容易。 我发现了几篇有关如何伪造CRC的文章。 这意味着如何对数据进行修补,以使计算出的CRC值具有预定义的值。 使用这种方法,我只需要简单地将实际有效负载的最后一个字节用作CRC值即可。 最后,我只需要使用我的有效载荷数据来计算“反向” CRC。 此计算的结果是我在计算CRC时必须使用的初始值。 当我在一个内存受限的系统上工作时,我将256个条目(CRC32为1024个字节)的CRC表的大小减小为16个条目(64个字节),现在分两步处理每个字节,这仍然要快得多而不是移位位。 // Reverse

2021-06-01 07:04:57    分类:技术分享    reverse   patch   crc   crc32   crc16

CRC16算法之二:CRC16-CCITT-XMODEM算法的java实现

CRC16算法系列文章:CRC16算法之一:CRC16-CCITT-FALSE算法的java实现 CRC16算法之二:CRC16-CCITT-XMODEM算法的java实现 CRC16算法之三:CRC16-CCITT-MODBUS算法的java实现 前言CRC16算法有很多种,本篇文章会介绍其中的CRC16-CCITT-XMODEM算法 功能实现CRC16-CCITT-XMODEM算法支持int、short类型支持选择数组区域计算实现package cc.eguid.crc16; /** * crc16多项式算法 * @author eguid * */ public class CRC16 { /** * CRC16-XMODEM算法(四字节) * @param bytes * @return */ public static int crc16_ccitt_xmodem(byte[] bytes) { return crc16_ccitt_xmodem(bytes,0,bytes.length); } /** * CRC16-XMODEM算法(四字节) * @param bytes * @param offset * @param count * @return */ public static int crc16_ccitt_xmodem(byte[] bytes,int

2021-05-13 10:44:45    分类:博客    crc16

CRC16算法之一:CRC16-CCITT-FALSE算法的java实现

CRC16算法系列文章: CRC16算法之一:CRC16-CCITT-FALSE算法的java实现 CRC16算法之二:CRC16-CCITT-XMODEM算法的java实现 CRC16算法之三:CRC16-CCITT-MODBUS算法的java实现 前言 JDK里包含了CRC32的算法,但是没有CRC16的,网上搜了一堆没有找到想要的,索性自己实现注意:CRC16算法分为很多种,本篇文章中,只讲其中的一种:CRC16-CCITT-FALSE算法CRC16算法系列之一:CRC16-CCITT-FALSE算法的java实现功能1、支持short类型2、支持int类型3、支持数组任意区域计算实现/** * crc16-ccitt-false加密工具 * * @author eguid * */ public class CRC16 { /** * crc16-ccitt-false加/解密(四字节) * * @param bytes * @return */ public static int crc16(byte[] bytes) { return crc16(bytes, bytes.length); } /** * crc16-ccitt-false加/解密(四字节) * * @param bytes -字节数组 * @return */ public static int

2021-05-13 10:44:36    分类:博客    crc16

CRC16算法之一:CRC16-CCITT-FALSE算法的java实现

CRC16算法系列文章: CRC16算法之一:CRC16-CCITT-FALSE算法的java实现 CRC16算法之二:CRC16-CCITT-XMODEM算法的java实现 CRC16算法之三:CRC16-CCITT-MODBUS算法的java实现 前言JDK里包含了CRC32的算法,但是没有CRC16的,网上搜了一堆没有找到想要的,索性自己实现注意:CRC16算法分为很多种,本篇文章中,只讲其中的一种:CRC16-CCITT-FALSE算法CRC16算法系列之一:CRC16-CCITT-FALSE算法的java实现功能1、支持short类型2、支持int类型3、支持数组任意区域计算实现/** * crc16-ccitt-false加密工具 * * @author eguid * */public class CRC16 { /** * crc16-ccitt-false加/解密(四字节) * * @param bytes * @return */public static int crc16(byte[] bytes) {return crc16(bytes, bytes.length); } /** * crc16-ccitt-false加/解密(四字节) * * @param bytes -字节数组 * @return */public static int crc16

2021-05-13 10:32:35    分类:博客    crc16