b_hdb3.java

来自「用java实现HDB3的编译码和5B6B码」· Java 代码 · 共 43 行

JAVA
43
字号
import java.io.*; 
import java.util.Scanner; 
  public class B_HDB3 { 
	public static void main(String[] args) { 

		int ML;
		Scanner s = new Scanner(System.in); 
		System.out.print("请输入二进制码流的长度:");
		ML=s.nextInt();

		int[] Ma_Liu= new int[ML]; 
		String b2; 
		Scanner sc = new Scanner(System.in); 
		System.out.print("******请输入二进制码流:"); 
		b2 = sc.nextLine(); 
		for (int i = 0; i < ML; i ++) { 
			char b=b2.charAt(i); 
			Ma_Liu[i]=Integer.parseInt(b+"");
		} 



		int m1=0,n0=0,n1=0,c1=+1,c0=0,c3=0;	
		for(int i=0;i<ML;i++){
			if(Ma_Liu[i]==1){c1=-c1;Ma_Liu[i]=c1;n1=n1+1;n0=0;}
			  else{n0=n0+1;}

			if(n0==4){c3++;c1=-c1;
			 if(i-3>=0&&c3==1){c1=-c1;Ma_Liu[i]=c1;n0=0;n1=0;}
			 if(n1%2==0&&i-3>=0&&c3!=1){ Ma_Liu[i]=c1;Ma_Liu[i-3]=c1;n0=0;n1=0;}


			  if(n1%2!=0&&i-3>=0&&c3!=1){c1=-c1;Ma_Liu[i]=c1;n0=0;n1=0;}
			  }
		}


		System.out.print("**************HDB3码流:");
		for (int i=0; i<ML; i++) {
			if(Ma_Liu[i]==1){System.out.print("+"+Ma_Liu[i]+" ");}
			else{ System.out.print(Ma_Liu[i]+" ");}} 
	}
	}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?