没有合适的资源?快使用搜索试试~ 我知道了~
* CRC16_CCITT:多项式x16+x12+x5+1(0x1021),初始值0x0000,低位在前,高位在后,结果与0x0000异或 * CRC16_CCITT_FALSE:多项式x16+x12+x5+1(0x1021),初始值0xFFFF,低位在后,高位在前,结果与0x0000异或 * CRC16_XMODEM:多项式x16+x12+x5+1(0x1021),初始值0x0000,低位在后,高位在前,结果与0x0000异或 * CRC16_X25:多项式x16+x12+x5+1(0x1021),初始值0xffff,低位在前,高位在后,结果与0xFFFF异或 * CRC16_MODBUS:多项式x16+x15+x2+1(0x8005),初始值0xFFFF,低位在前,高位在后,结果与0x0000异或 * CRC16_IBM:多项式x16+x15+x2+1(0x8005),初始值0x0000,低位在前,高位在后,结果与0x0000异或 * CRC16_MAXIM:多项式x16+x15+x2+1(0x8005),初始值0x0000,低位在前,高位在后,结果与0xFFFF异或 * CRC1
资源推荐
资源详情
资源评论
运行结果:
package com.transportech.common.util;
public class CRC16 {
public static String CRC16_GENIBUS(int[] buffer) {
int wCRCin = 0xFFFF;
int wCPoly = 0x1021;
for (int b : buffer) {
for (int i = 0; i < 8; i++) {
boolean bit = (((b&0xFFFF) >> (7 - i) & 1) == 1);
boolean c15 = ((wCRCin >> 15 & 1) == 1);
wCRCin <<= 1;
if (c15 ^ bit)
wCRCin ^= wCPoly;
}
}
wCRCin &= 0xffff;
wCRCin ^= 0xFFFF;
return
convertToHexString
(wCRCin);
}
/**
* CRC-CCITT (0xFFFF)
* CRC16_CCITT_FALSE:多项式 x16+x12+x5+1(0x1021),初始值
0xFFFF,低位在后,高位在前,结果与 0x0000 异或
*
* @param buffer
* @return
*/
public static String CRC16_CCITT_FALSE(int[] buffer) {
int wCRCin = 0xFFFF;
int wCPoly = 0x1021;
for (int b : buffer) {
for (int i = 0; i < 8; i++) {
boolean bit = (((b&0xFFFF) >> (7 - i) & 1) == 1);
boolean c15 = ((wCRCin >> 15 & 1) == 1);
wCRCin <<= 1;
if (c15 ^ bit)
wCRCin ^= wCPoly;
}
}
wCRCin &= 0xffff;
wCRCin ^= 0x0000;
return
convertToHexString
(wCRCin);
}
public static String CRC16_ARC(int[] buffer) {
int wCRCin =
revertBit
(0x0000);
int POLYNOMIAL =
revertBit
(0x8005); //8005 逆 Bit 序 A001
for (int b : buffer) {
wCRCin ^= ((int) b & 0x00ff);
for (int j = 0; j < 8; j++) {
if ((wCRCin & 0x0001) != 0) {
wCRCin >>= 1;
wCRCin ^= POLYNOMIAL;
} else {
wCRCin >>= 1;
}
}
}
wCRCin &= 0xffff;
wCRCin ^= 0x0000;
return
convertToHexString
(wCRCin);
}
public static String CRC16_AUG_CCITT(int[] buffer) {
int wCRCin = 0x1D0F;
int wCPoly = 0x1021;
for (int b : buffer) {
for (int i = 0; i < 8; i++) {
boolean bit = (((b&0xFFFF) >> (7 - i) & 1) == 1);
boolean c15 = ((wCRCin >> 15 & 1) == 1);
wCRCin <<= 1;
if (c15 ^ bit)
wCRCin ^= wCPoly;
}
}
wCRCin &= 0xffff;
wCRCin ^= 0x0000;
return
convertToHexString
(wCRCin);
}
public static String CRC16_BUYPASS(int[] buffer) {
int wCRCin = 0x0000;
int wCPoly = 0x8005;
for (int b : buffer) {
for (int i = 0; i < 8; i++) {
boolean bit = (((b&0xFFFF) >> (7 - i) & 1) == 1);
boolean c15 = ((wCRCin >> 15 & 1) == 1);
wCRCin <<= 1;
if (c15 ^ bit)
wCRCin ^= wCPoly;
}
}
wCRCin &= 0xffff;
wCRCin ^= 0x0000;
return
convertToHexString
(wCRCin);
}
剩余13页未读,继续阅读
资源评论
qq_22607029
- 粉丝: 0
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- #P0015. 全排列 超级简单
- pta题库答案c语言之排序4统计工龄.zip
- pta题库答案c语言之树结构7堆中的路径.zip
- pta题库答案c语言之树结构3TreeTraversalsAgain.zip
- pta题库答案c语言之树结构2ListLeaves.zip
- pta题库答案c语言之树结构1树的同构.zip
- 基于C++实现民航飞行与地图简易管理系统可执行程序+说明+详细注释.zip
- pta题库答案c语言之复杂度1最大子列和问题.zip
- 三维装箱问题(Three-Dimensional Bin Packing Problem,3D-BPP)是一个经典的组合优化问题
- 以下是一些关于Linux线程同步的基本概念和方法.txt
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功