代码:

#include <stdio.h>
#define maxSize 1000// 文件输出
int output(int bin){FILE *fp;char enter = '\n';fp = fopen("OUTHDB3YUANMA.txt","a");if(fp == NULL){printf("数据错误!");return 0;}fprintf(fp,"%d",bin);fclose(fp); return 0;
}/*** @description: Encode the source code as HDB3 code.* @param: hdb3   is a pointer to HDB3 code.*         source is a pointer to source code.*         len    is sequence length.* @return: none*/
void HDB3_Encoding(char arr[], int len)
{   unsigned int i = 0;unsigned int cnt_0 = 0; //记录连续0的个数char last_b = 0;        //记录上一个信码(含B及B')极性,初始化为0保证第一个信码极性为+1char last_v = -1;       //记录上一个V码极性,初始化为-1保证第一个V码极性为+1int a[maxSize];for(i ; i < len; i++){if(arr[i]=='0'){//源码为0cnt_0++;if(cnt_0 >= 4){//连续0的个数大于4cnt_0 = 0;a[i] = (last_v&0x80)?1:-1;//保证V码极性交替变化last_v = a[i];//更新last_vif(last_v != last_b){//如果当前V码与前一个信码极性不同,则增加同极性的补信码a[i-3] = last_v;last_b = last_v;//更新last_b}}else{a[i] = 0;}}else{//源码为1cnt_0 = 0;if(!last_b){//如果是第一个为1的源码,则对应HDB3码的信码极性为+1a[i] = 1;last_b = 1;}else{a[i] = (last_b&0x80)?1:-1;//保证信码极性交替变化last_b = a[i];//更新last_b}}output(a[i]);}printf("\n");
}// 文件读取
void input()
{FILE *fp;char arr[maxSize];int a[maxSize];int index = 0;int flag = 0;int i = 0;int temp = 0;fp = fopen("HDB3YUANMA.txt", "r");if (fp == NULL){printf("数据错误!");return;}while (1){flag = fscanf(fp, "%c", &arr[index]);printf("%c ", arr[index]);if (flag == EOF){break;}index++;}if (flag){printf("HDB3编码后:");HDB3_Encoding(arr,index);}printf("\n");fclose(fp);
}int main()
{input();return 0;
}

HDB3YUANMA.txt: 010111000011010110000011110101110000101110000001011000000000000111010

OUTHDB3YUANMA.txt: 010-11-10001-110-101-1000-101-11-1010-11-10001-101-11000-10010-110001000-10001-11-1010

上一篇:
【光纤通信】实验一、C语言实现AMI编码

更多相关文章:
【通信工程】信息类,电子类,电气工程,自动化,计算机,软件工程,机电,等相关专业 全套学习指导


答疑资料qq群:1007576722

【光纤通信】实验二、C语言实现HDB3编码相关推荐

  1. matlab语言实验二,实验二 MATLAB语言基础

    实验二 MATLAB 语言基础 一.实验目的 基本掌握 MATLAB 向量.矩阵.数组的生成及其基本运算(区分数组运算和矩阵运算).常用的数学函数.了解字符串的操作. 二.实验内容 (1) 向量的生成 ...

  2. 数据库实验二 SQL语言

    实验二 SQL语言 实验目的 熟悉并掌握创建表,插入记录,查询记录,删除记录,修改记录. 创建索引,删除索引. 创建视图,使用视图,删除视图. 实验内容 现有一个单位内部的小型图书借阅系统,假设每本图 ...

  3. python语言基础实验_实验二Python语言基础函数包练习.doc

    实验二Python语言基础函数包练习 实验 Python语言基础函数包练习:1208 学号: 实验目的 1.Python语言包,如math.NumPySciPy和Matplotlib等函数包的使用实验 ...

  4. 实验二 SQL 语言——SELECT 查询操作(第一部分)

    SQL 语言--SELECT 查询操作 实验目的: -了解查询的概念和方法:-掌握 SQL Server 集成管理器查询子窗口中执行 SELECT 操作的方法:-掌握 SELECT 语句在单表查询中的 ...

  5. 人工智能实验二——prolog语言求解渡河问题(传教士和野人渡河,农夫渡河问题)实现详解

    农夫渡河问题求解 这两个问题都是渡河问题,思路和方式是一样的:给出求解Prolog代码: 问题描述 一个农夫带着一匹狼.一只羊.一颗白菜要过河, 只有一条船而且 农夫每次最多只能带一个动物或物品过河, ...

  6. 数据结构实验二(C语言):银行排队系统

    银行排队系统 [问题描述]假设银行只有2个窗口对外营业,顾客到银行办理业务,首先要取一个顺序号,然后排队等待叫号.被叫到号的顾客到柜台接受服务,服务完毕后离开.到了下班时间不再接收新来的顾客.顾客分为 ...

  7. c语言程序设计实验二模板,C语言程序设计实验二.doc

    C语言程序设计实验二.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3.该文档所 ...

  8. R语言入门第三集 实验二:基本数据处理

    R语言入门第三集 实验二:基本数据处理 一.资源 [R语言]R语言数据处理--东北大学大数据班R实训第二次作业 二.答案更新纠正 2.11.从df中选取date . item_id . cate_id ...

  9. 周信东c语言实验二实验报告,周信东主编最新版C语言程序设计基础实验一实验报告.doc...

    周信东主编最新版C语言程序设计基础实验一实验报告.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我 ...

  10. c语言编简单博弈小游戏,[2018年最新整理]实验二:利用α-β搜索过程的博弈树搜索算法编写一字棋游戏.doc...

    [2018年最新整理]实验二:利用α-β搜索过程的博弈树搜索算法编写一字棋游戏 实验二:利用α-β搜索过程的博弈树搜索算法编写一字棋游戏 一.实验目的与要求 (1)了解极大极小算法的原理和使用方法,并 ...

最新文章

  1. android 事件冒泡,Android事件分发
  2. 皮一皮:有钱人的世界咱不懂之不知道第几次...
  3. Hibernate hql 查询指定字段并获取结果集
  4. 深度学习目标检测之 YOLO v1
  5. 【剑指offer】面试题09:用两个栈实现队列(Java)
  6. linux 关闭自动升级,开启关闭Centos的自动更新(转)
  7. mybaitis快速生成_关于Mybatis-Plus代码生成器快速使用心得
  8. idea运行maven:No URLs will be polled as dynamic configuration sources
  9. bzoj1010 [HNOI2008]玩具装箱toy
  10. linux下删除编译安装的软件,Linux 中卸载编译安装的软件
  11. weico.android批量转发,运行更稳定 Weico Android正式版发布
  12. OpenCV之Vec3f
  13. Oracle 21版Database In-Memory LivaLabs实验(上)
  14. nginx1.18.0 安装vts
  15. 2021年大一下网页期末作业(纯html+css实现)
  16. 论文笔记:MPRNet: Multi-Stage Progressive Image Restoration
  17. iOS无限后台加速耗电的问题
  18. PPTV面试算法思考-最长对称子字符串
  19. xml基础、DTD验证、Schema验证(备忘)
  20. JAVA电子书店管理系统计算机毕业设计Mybatis+系统+数据库+调试部署

热门文章

  1. ps去水印教程_Adobe Photoshop CS2去除水印方法 PS去水印教程
  2. Android开发入门教程pdf
  3. Loadrunner教程
  4. zemax准直透镜_基于ZEMAX的半导体激光器非球面准直透镜设计.PDF
  5. echarts--迁徙图
  6. 云计算与大数据技术应用 第四章
  7. 查看ESP32模组中Flash颗粒以及芯片信息
  8. win11精简中文版 兼容ISO
  9. php的md5(),PHP中MD5函数效率
  10. 常见图像格式清晰度对比