直奔主题

#include"stdio.h"
#include"string"
void HDB3(char *input_zifu)
{
    char output_shuzi[50]={0};
    int i,flag0=0,flag1=0;
    int lastV=-1,last_shuzi=-1;
    for(i=0;input_zifu[i]!='\0';i++)
    {
    if(input_zifu[i]=='0')//如果本位为0
    {
        ++flag0;//记录出现0的个数
        if(flag0==4)//连续出现4个0,第四个0必改V
        {
            flag0=0;//对0的计数重新开始
            lastV*=-1;//每出现4个0必有V且极性交替
            //lastV=1 ? output_shuzi[i]=2 : output_shuzi[i]=-2;//V先用数字2代替,正负交替
            output_shuzi[i]=(lastV==1) ?  2:-2;//V先用数字2代替,正负交替
            //if(lastV==1) output_shuzi[i]=2;
            //if(lastV==-1) output_shuzi[i]=-2;
            if(lastV!=last_shuzi)//如果V与前一个数字符号不同,则第一个0变B
            {
              //last_shuzi=1 ? output_shuzi[i-3]=-3 : output_shuzi[i-3]=3;
              output_shuzi[i-3]=(last_shuzi==1) ? -3:3;//B先用数字3代替,与前一个数字符号相反
            //if(last_shuzi==1) output_shuzi[i-3]=-3;
            //if(last_shuzi==-1) output_shuzi[i-3]=3;
            }
            last_shuzi=lastV;//出现V后,正负号从V开始重新交替
        }
        else
        {
            output_shuzi[i]=9;//因为不定长数组内出现数字0后无法得知数组长度,所以用9代替0
        }
    }
    else//如果本位是1
    {
        flag0=0;//0的个数清零,重新记录
        last_shuzi*=-1; output_shuzi[i]=last_shuzi;//第一个1从+1开始交替
    }
    }
    printf("HDB3码为:\n");
    for(i=0;output_shuzi[i]!=0;i++)
    {
      switch(output_shuzi[i])//将转换后数组内容以HDB3码的形式输出
      {
      case  9:printf("0"); break;
      case -1:printf("-1");break;
      case  1:printf("+1");break;
      case -2:printf("-V");break;
      case  2:printf("+V");break;
      case -3:printf("-B");break;
      case  3:printf("+B");break;
      }
    }
    printf("\n");
}

int main(void)
{
    char IN_ZIFU[50]={0};
    while(1)
    {
    printf("请输入消息码:\n");
    scanf("%s",IN_ZIFU);
    HDB3(IN_ZIFU);
    }
    //printf("%d\n",(int)IN_ZIFU[0]-48);//字符转数字-48
    return 0;
}

HDB3码编码C语言实现相关推荐

  1. cmi编码实验_【2017年整理】实验及HDB3码CMI码编码.ppt

    [2017年整理]实验及HDB3码CMI码编码 实验地点: 三楼最西边 通信工程系办公室 HDB3码(三阶高密度双极性码) 编码规则: 把消息代码变换成AMI码.检查AMI码的连0串情况. 当没有4个 ...

  2. c语言海明校验码编码,海明校验码的编码规则有哪些?

    在海明码中, 位号数(1.2.3.--.n)为2的权值的那些位,即: 1(2^0).2(2^1).4(2^2).8(2^3).-2^(r-1)位,作为奇偶校验位,并记作: P1.P2.P3 .P4.- ...

  3. 打码(C语言)常见粗心小错误 (前方高能,一定要点)

    打码(C语言)常见粗心小错误 标签(空格分隔): 博客 自我介绍 本人学院 (http://sdcs.sysu.edu.cn/) 欢迎访问 本人学号 16340213 目录 打码C语言常见粗心小错误 ...

  4. 信道编码之纠删码编码

    简介 随着数据的存储呈现出集中化(以分布式存储系统为基础的云存储系统)和移动化(互联网移动终端)的趋势,数据可靠性愈发引起大家的重视.集群所承载的数据量大大上升,但存储介质本身的可靠性进步却很小,这要 ...

  5. 条形码和二维码编码解码工具类源码

    有一个好的工具,会让你的开发事半功倍.再将讲这个工具类之前,我先给小白补充一点条形码和二维码(以下基础知识选自,我本科阶段的一本教材:<物联网导论>(刘云浩 编著).有对物联网感兴趣的,可 ...

  6. 一文带你看懂算术编码(C语言)

    算术编码C语言 简介 算术编码是图像压缩的主要算法之一. 是一种无损数据压缩方法,也是一种熵编码的方法.和其它熵编码方法不同的地方在于,其他的熵编码方法通常是把输入的消息分割为符号,然后对每个符号进行 ...

  7. 信息论 输入概率的哈夫曼编码 C语言

    信息论 哈夫曼编码 C语言 哈夫曼编码是一种效率比较高的变长无失真信源编码方法.哈夫曼编码的编码方法,步骤如下: 将信源符号按概率从大到小的顺序排列,为方便起见,令p(a1)>=p(a2)> ...

  8. 格雷码编码+解码+实现(Python)

    01 二值码 02 格雷码编码 2.1 编码优点 2.2 编码生成 2.3 递归生成 2.4 二值码转换 2.5 编码图 03 格雷码投影 3.1 投影图案生成 3.2 DLP投影图像 04 格雷码解 ...

  9. 【RS码1】系统RS码编码原理及MATLAB实现(不使用MATLAB库函数)

    关注公号[逆向通信猿]更精彩!!! 基础知识 要想搞懂本节知识,需要先熟悉掌握以下前几篇博客 [多元域乘法]多项式乘法电路原理及MATLAB详解 [多元域除法]多项式除法电路原理及MATLAB详解 R ...

  10. c语言即时通讯软件源码,即时通讯软件源码-基于c语言即时通讯软件代码实现

    我不知道哪种语言无关紧要.开源,我不知道该用什么. 即时通讯软件源代码为JAVA语言 对于即时通讯软件源代码最好是用C语言编写的,想学一下,感谢您即时通讯软件有什么. includewinscock2 ...

最新文章

  1. 清华大学大数据研究中心“RONG”奖学金申请通知
  2. SAP PM 初级系列之27 – SAP系统怎么知道某种类型的维修工单检验批上的检验类型是14?
  3. mysql联合查询数量不一致_Mybatis关联查询,查询出的记录数量与数据库直接查询不一致,如何解决?...
  4. Linux Kernel Development——列出系统中所有的进程
  5. python管道安装包_Python 炫技操作:安装包的八种方法
  6. springmvc的主要功能_Spring MVC入门
  7. Docker - 导出导入容器
  8. 开放式可编程保险市场Tidal Finance完成由KR1领投的195万美元种子轮融资
  9. python基础判断题汇总_python基础 判断题
  10. LINUX使用chrpath更改编译结果的rpath
  11. onclick获取当前节点
  12. 组态王gprs虚拟服务器,GPRS/CDMA 网络通过组态王软件虚拟串口(IO/设备)实现无线远程...
  13. 数据结构初阶——二叉树
  14. 新产品开发过程基本原则
  15. 原生js动态添加元素
  16. 影响塑料制品注塑质量的因素,以及解决方案
  17. iFunk翼只换不修强出新高度
  18. 电子设计(1)二极管防电源反接电路
  19. Dubbo相关问题如何用管程实现异步转同步?
  20. WAVE绘制频谱图(三)——PCM数据处理以及图谱显示

热门文章

  1. 云IDE:CodeSandbox: 快速进行前端开发的云IDE
  2. 软件测试怎么测微信朋友圈,面试题:如何测试微信朋友圈(附图)
  3. 光学软件国产化项目开发心得
  4. 武汉大学计算机学院电子与通信工程,武汉大学电子信息学院信息与通信工程
  5. word查重_2020论文查重倾情分享 | 查重注意要点
  6. 小程序页面调用服务器接口授权,小程序的授权和登陆
  7. 刘润老师的5分钟商学院营销案例~比例偏见!
  8. max30102c语言程序,MAX30102基于STM32F103C8T6的程序源码
  9. MSC-51单片机原理与实践——第四章习题及答案解析
  10. rpc调用过程原理分析以及Dubbo、Feign调用过程