📄 crc_check.java
字号:
/**
* @(#)CRC.java
*
* CRC application
*
* @author Chenx of CSU
* @version 1.00 2009/4/1
*/
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;
public class CRC_Check {
protected BitSet bs_gt;
protected BitSet bs_sf;
protected String sf;
protected String gt;
public void setBitSet(int n) {
this.bs_gt = new BitSet(n);
this.bs_sf = new BitSet(n);
}
public String printBitSet(BitSet b,int length) {
StringBuilder bbits = new StringBuilder();
for (int i = 0; i < length; i++)
bbits.append(b.get(i) ? "1" : "0");
System.out.println(bbits);
return bbits.toString();
}
public void setFrame() {
System.out.println("Source Frame:");
try {
BufferedReader br = new BufferedReader(new InputStreamReader(
System.in));
sf = br.readLine();
} catch (Exception ep) {
ep.printStackTrace();
}
}
public void setGenerator() {
System.out.println("Generator:");
try {
BufferedReader br = new BufferedReader(new InputStreamReader(
System.in));
gt = br.readLine();
} catch (Exception ep) {
ep.printStackTrace();
}
}
public void formatSourceFraToBitSet() {// first detect the data as if
for (int i = 0; i < sf.length(); i++) {
if (sf.charAt(i) == '1')
bs_sf.set(i, true);
else
bs_sf.set(i, false);
}
}
public void formatGerneratorToBitSet() {
for (int i = 0; i < gt.length(); i++) {
if (gt.charAt(i) == '1')
bs_gt.set(i, true);
else
bs_gt.set(i, false);
}
}
public String getCheckSumFrame() {
BitSet tbs = new BitSet(32);
tbs = (BitSet) bs_sf.clone();
for (int i = 1; i <= sf.length(); i++) {
if (!bs_sf.get(0))
moveLeft_BitSet(bs_sf, 1);
else
{bs_sf.xor(bs_gt);
moveLeft_BitSet(bs_sf, 1);
}
}
System.out.println("The System is Producing the CheckSum Frame:");
for(int i=0;i<bs_sf.size();i++){
boolean bl=bs_sf.get(i);
if (bl==true)
tbs.set(i+sf.length());
else tbs.clear(i+sf.length());
}
return printBitSet(tbs,sf.length()+gt.length()-1);
}
public void moveLeft_BitSet(BitSet bs, int n) {
for (int i = 0; i < bs.length(); i++) {
int bl = bs.get(i + n) ? 1 : 0;
if (bl == 1)
bs.set(i);
else
bs.clear(i);
}
}
public static void main(String[] args) throws Exception{
CRC_Check cc = new CRC_Check();
cc.setBitSet(32);
cc.setFrame();
cc.formatSourceFraToBitSet();
cc.setGenerator();
cc.formatGerneratorToBitSet();
cc.getCheckSumFrame();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -