零比特插入、删除:
1.发送端在两个标志字段为F间的比特序列中,如果检查出连续的5个"1",不管后面的比特位是0或1,都增加一个“0”比特位,发送端经过零比特插入后的数据可以保证不会出现6个连续的“1”
2.接收端在接受一个帧时,首先找到F字段以确定帧的起始边界,接着对其中的比特序列进行检查,没发现5个连续的“1”,将后面的一个“0”比特位删除,还原成原来的比特序列。
例如:帧数据段中有“010000011111110101111110”
比特填充后是“01000001111101101011111010”
接收端还原为 “010000011111110101111110”
实现零比特插入
/*
功能:零比特插入
日期:2019/3/17
*/
package com.vivi;
import java.util.Scanner;
public class Demo {
public static void main(String[] args) {
//原来的二进制编码
System.out.println("Please input binary code:");
Scanner scan = new Scanner(System.in);
String input = scan.next();
System.out.println("original:" + input);
//输出的编码
String outCode = input.replace("11111","111110" );
outCode = "01111110" + outCode + "01111110";
System.out.println("output:" + outCode);
//收到的编码
String receiveNum = outCode;
int count = 0;
int start = receiveNum.indexOf("01111110") + 8;
receiveNum = receiveNum.substring(8);
int end = receiveNum.indexOf("01111110");
receiveNum = receiveNum.substring(0, receiveNum.length()-8);
System.out.println("receive:" + receiveNum);
//处理后的编码
receiveNum = receiveNum.replace("1111101","111111" );
System.out.println("handle:" + receiveNum);
}
}