打开APP
未登录
开通VIP,畅享免费电子书等14项超值服
开通VIP
首页
好书
留言交流
下载APP
联系客服
java实现CRC校验码
宇宙之窗
>《Java》
2014.04.18
关注
[java]
view plain
copy
public
class
CRC {
/**
* CRC-CCITT(Kermit)验证模式
* @param str
* @return
*/
public
String CRC_CCITT_Kermit(String str) {
int
j, b, rrrc, c, i;
String tmpBalance;
int
k;
rrrc =
0
;
tmpBalance = str;
int
tmpInt, CharInt;
String tmpChar, tmpStr;
tmpStr =
""
;
int
High;
int
Low;
for
(j =
1
; j <=
3
; j++) {
if
(Character.isDigit(tmpBalance.charAt(
2
* j -
2
))) {
High = Integer.parseInt(tmpBalance.charAt(
2
* j -
2
) +
""
);
}
else
{
High =
0
;
}
if
(Character.isDigit(tmpBalance.charAt(
2
* j -
1
))) {
Low = Integer.parseInt(tmpBalance.charAt(
2
* j -
1
) +
""
);
}
else
{
Low =
0
;
}
High = (High &
0xff
) <<
4
;
High = High | Low;
k = High;
for
(i =
1
; i <=
8
; i++) {
c = rrrc &
1
;
rrrc = rrrc >>
1
;
if
((k &
1
) !=
0
) {
rrrc = rrrc |
0x8000
;
}
if
(c !=
0
) {
rrrc = rrrc ^
0x8408
;
}
k = k >>
1
;
}
}
for
(i =
1
; i <=
16
; i++) {
c = rrrc &
1
;
rrrc = rrrc >>
1
;
if
(c !=
0
) {
rrrc = rrrc ^
0x8408
;
}
}
c = rrrc >>
8
;
b = rrrc <<
8
;
rrrc = c | b;
tmpInt = rrrc;
tmpStr =
""
;
for
(i =
1
; i <=
4
; i++) {
tmpChar =
""
;
CharInt = tmpInt %
16
;
if
(CharInt >
9
) {
switch
(CharInt) {
case
10
:
tmpChar =
"A"
;
break
;
case
11
:
tmpChar =
"B"
;
break
;
case
12
:
tmpChar =
"C"
;
break
;
case
13
:
tmpChar =
"D"
;
break
;
case
14
:
tmpChar =
"E"
;
break
;
case
15
:
tmpChar =
"F"
;
break
;
}
}
else
{
tmpChar = Integer.toString(CharInt);
}
tmpInt = tmpInt /
16
;
tmpStr = tmpChar + tmpStr;
}
System.out.println(
"tmpStr:"
+ tmpStr);
return
tmpStr;
}
/**
* CRC-CCITT(XModem)
* CRC-CCITT(0xFFFF)
* CRC-CCITT(0x1D0F)
* 校验模式
* @param flag< XModem(flag=1) 0xFFFF(flag=2) 0x1D0F(flag=3)>
* @param str
* @return
*/
public
String CRC_CCITT(
int
flag,String str) {
int
crc =
0x00
;
// initial value
int
polynomial =
0x1021
;
byte
[] bytes=str.getBytes();
switch
(flag){
case
1
:
crc=
0x00
;
break
;
case
2
:
crc=
0xFFFF
;
break
;
case
3
:
crc=
0x1D0F
;
break
;
}
for
(
int
index =
0
; index< bytes.length; index++) {
byte
b = bytes[index];
for
(
int
i =
0
; i <
8
; i++) {
boolean
bit = ((b >> (
7
-i) &
1
) ==
1
);
boolean
c15 = ((crc >>
15
&
1
) ==
1
);
crc <<=
1
;
if
(c15 ^ bit) crc ^= polynomial;
}
}
crc &=
0xffff
;
str = Integer.toHexString(crc);
return
str;
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报
。
打开APP,阅读全文并永久保存
查看更多类似文章
猜你喜欢
类似文章
【热】
打开小程序,算一算2024你的财运
忍气吞声,委曲求全,其实都是烂品格
母亲节,收到儿子错发的红包,我收拾行李要回我的存款,回家独居
女人的身体一旦被男人触碰,真实的情感关系,收藏起来看看
邵伟华的书有哪些邵伟华的书籍
订婚仪式主持词
稻盛和夫:赚钱最快的四条路,从未改变
更多类似文章 >>
生活服务
热点新闻
留言交流
回顶部
联系我们
分享
收藏
点击这里,查看已保存的文章
导长图
关注
一键复制
下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!
联系客服
微信登录中...
请勿关闭此页面
先别划走!
送你5元优惠券,购买VIP限时立减!
5
元
优惠券
优惠券还有
10:00
过期
马上使用
×