02-07通信编码
来源:互联网 发布:淘宝货到付款卖家 编辑:程序博客网 时间:2024/06/16 18:26
通信编码
假设通信的物理设备只能表示1和0两种状态。
1和0状态都不能持续太久,否则物理设备会出现故障。因而人们设计出一种变通的方法:
多个0后人为地补入一个1
多个1后人为地补入一个0
当然,在解码的时候,要相应处理。
下面我们用串来模拟这个算法。
假设有需要通信的串:
String s = "1010100100100001011110100010101010100001010101111";
连续的3个0,后需要插入一个1
连续的3个1,后需要输入一个0
10101001001000101011101010001101010....
想一想,加码处理后,需要把它再解码出来。
public class MyTest{public static String encode(String x){StringBuffer s = new StringBuffer();int n0 = 0; // 0连续的次数int n1 = 0; // 1连续的次数for(int i=0; i<x.length(); i++){char c = x.charAt(i);s.append(c);if(c=='0'){n0++;n1=0;}else{n1++;n0=0;}if(n0==3) {s.append('1');n0 = 0;}if(n1==3){s.append('0');n1 = 0;}}return s.toString();}public static String decode(String x){StringBuffer s = new StringBuffer();int n0 = 0; // 0连续的次数int n1 = 0; // 1连续的次数for(int i=0; i<x.length(); i++){char c = x.charAt(i);s.append(c);if(c=='0'){n0++;n1=0;}else{n1++;n0=0;}if(n0==3 || n1==3){i++; // 越过1个字符不收集n0 = n1 = 0;}}return s.toString();}public static void main(String[] args){// 通信编码问题//String s = "1010100100100001011110100010101010100001010101111";// 连续的3个0,后需要插入一个1// 连续的3个1,后需要出入一个0// 10101001001000101011101010001101010// * * * String s = "1010100100100001011110100010101010100001010101111";String s2 = encode(s);System.out.println(s2);String s3 = decode(s2);System.out.println(s3);}}
0 0
- 02-07通信编码
- 第02讲-通信编码
- 通信编码一些规则
- 算法基础-通信编码
- 通信基础 -----编码与调制
- 通信原理之 正交编码
- 几种通信编码方式
- 通信基础 -----编码与调制
- 移动通信中的语音编码技术
- AT指令之通信录PDU编码
- 通信编码-解题思路及过程
- 通信系统概论---信息(数据)编码技术
- 通信系统为何编码和解码(第三次作业)
- java客户端和vc程序通信时的编码问题
- 【粗解】【通信编码】卷积编码器的简单实现
- 【详解】【通信编码】Vertibi算法实现卷积码解码
- 基于TCP/IP协议的两实体通信 编码呢
- 模拟socket通信中自定义协议通信(编码/解码、成帧/界定帧)
- 一个想了好几天的问题——关于8086cpu自己编写9号中断不能单步的问题
- 02-06加密与解密_设计程序
- JS操作JSON
- 发送Http请求(POST GET)的方法
- 学长写的一个处理大数据多个文件的排序算法
- 02-07通信编码
- 解决GRUB- error: no such partition grub rescue>
- 使用希捷DiscWizard格式化3TB硬盘并分区
- 聆听沉默 (愿与君共勉)
- 工程思维与中国人情社会 (一)
- 桥接模式
- 02-08格式检查
- Pat(Advanced Level)Practice--1042(Shuffling Machine)
- Qt-Qlabel 自定义鼠标点击事件以及文本样式效果设计