CRC16算法之一:CRC16-CCITT-FALSE算法的java实现
2018-02-12 17:12
2136 查看
CRC16算法系列文章:
注意:CRC16算法分为很多种,本篇文章中,只讲其中的一种:CRC16-CCITT-FALSE算法
CRC16算法系列之一:CRC16-CCITT-FALSE算法的java实现
2、支持int类型
3、支持数组任意区域计算
实现
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(byte[] bytes, int len) { int crc = 0xFFFF; for (int j = 0; j < len; j++) { crc = ((crc >>> 8) | (crc << 8)) & 0xffff; crc ^= (bytes[j] & 0xff);// byte to int, trunc sign crc ^= ((crc & 0xff) >> 4); crc ^= (crc << 12) & 0xffff; crc ^= ((crc & 0xFF) << 5) & 0xffff; } crc &= 0xffff; return crc; } /** * crc16-ccitt-false加/解密(四字节) * * @param bytes * @return */ public static int crc16(byte[] bytes, int start, int len) { int crc = 0xFFFF; for (; start < len; start++) { crc = ((crc >>> 8) | (crc << 8)) & 0xffff; crc ^= (bytes[start] & 0xff);// byte to int, trunc sign crc ^= ((crc & 0xff) >> 4); crc ^= (crc << 12) & 0xffff; crc ^= ((crc & 0xFF) << 5) & 0xffff; } crc &= 0xffff; return crc; } /** * crc16-ccitt-false加/解密 * * @param bytes * -字节数组 * @return */ public static short crc16_short(byte[] bytes) { return crc16_short(bytes, 0, bytes.length); } /** * crc16-ccitt-false加/解密(计算从0位置开始的len长度) * * @param bytes * -字节数组 * @param len * -长度 * @return */ public static short crc16_short(byte[] bytes, int len) { return (short) crc16(bytes, len); } /** * crc16-ccitt-false加/解密(两字节) * * @param bytes * @return */ public static short crc16_short(byte[] bytes, int start, int len) { return (short) crc16(bytes, start, len); } }
相关文章推荐
- CRC16算法之三:CRC16-CCITT-MODBUS算法的java实现
- crc16 ccitt 单片机与java匹配算法
- JAVA编程心得-JAVA实现CRC-CCITT(XMODEM)算法
- CRC16算法之二:CRC16-CCITT-XMODEM算法的java实现
- CCITT CRC-16计算原理与实现
- CRC16常见几个标准的算法及C语言实现
- CCITT CRC-16计算原理与实现
- CRC代码算法实现-CRC-16 MODBUS代码实验
- CRC-16算法实现(转)
- 用Perl语言实现CRC-16算法和应用
- CRC16常见几个标准的算法及C语言实现
- CRC16常见几个标准的算法及C语言实现
- JAVA编程心得-JAVA实现CRC-CCITT(XMODEM)算法
- CRC_16 原理及其C语言算法实现
- CRC-16算法的C语言实现(图文)
- Java实现循环冗余码(CRC)生成算法
- CRC16 三种算法及c实现
- CRC16 三种算法及c实现
- 【算法集中营】CRC16 三种算法及c实现
- CCITT CRC-16计算原理与实现【整理综合】