⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 crc_check.java

📁 CRC程序的演示程序
💻 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 + -