2.4 课程设计分析
校验和的计算过程主要分为三个步骤:数据文件的输入、校验和的计算和校验结果的输出。其中,主要的是数据的输入和校验和的计算。

  1. 数据的输入方式
    输入数据可能是以字符形式存储的,而校验和的计算则要采用数据形式,所以在从文件读取数据时,都要进行字符到数据的相互转换。

1) 将读入的ASCII码转化为相应的整型变量。

if(ch>='0'&&ch<='9')ch-='0';
else
{if(ch>='a'&&ch<='f')ch=ch-'a'+10;elseif(ch>='A'&&ch<='F')ch=ch-'A'+10;
}
2) 在使用C++编程时直接使用16进制的方式打开输入文件。
ifstream in(argv[1],ios::nocreate);
in.setf(ios::hex);
  1. 校验和的计算
    校验和算法是本程序的核心部分,在2.5节中我们将介绍一些相关的算法,而应用最为普遍的是端循环进位法。

端循环进位的算法如下:将数据按一定数位进行累加,最高位的进位则循环加入最低位。待校验的数据按16位为一个单位相加,采用端循环进位,最后对所得16位的数据取反码。因为待校验的数据是以字节方式分隔的,所以为了方便,将16位的数据分成高8位和低8位分别处理。该算法的代码如下:

endaroundcarry(int& highbyte,int & lowbyte)
{while(highbyte>0xff||lowbyte>0xff) //高8位或低8位中的任何一方产生溢出(进位){lowbyte+=(highbyte>>8);     //低字节加上高字节超过8位的进位highbyte=highbyte&0xff;     //清除高字节的进位highbyte+=(lowbyte>>8);     //高字节加上来自低字节的进位lowbyte=lowbyte&0xff;       //清除低字节的进位}

《计算机网络课程设计(第2版)》——2.4节课程设计分析相关推荐

  1. 火车时刻表C语言报告,终稿火车订票系统的设计与实现课程设计.doc最终版(范文1)...

    <火车订票系统的设计与实现课程设计.doc>由会员分享,可免费在线阅读全文,更多与<(终稿)火车订票系统的设计与实现课程设计.doc(最终版)>相关文档资源请在帮帮文库(www ...

  2. 重言式判别c语言中文网,重言式判别 重言式判别源码及课程设计 c语言版.doc

    重言式判别 重言式判别源码及课程设计 c语言版 重言式的判别 题目: 一个逻辑表达式如果对于其変元的任一种取值都为真,则称为重言式:反之,如果对于其变元的任一种取值都为假,则称为矛盾式:然而,更多的情 ...

  3. Java课程设计(2020版)

    目录 参考资料 一. 题目选择说明 1. 传统题目 2. 综合性题目(有一定挑战性.有趣.实用) 2.1题目特点: 2.2 常见类库与技术参考资料 2.2.1 jsoup 2.2.2 HttpComp ...

  4. c语言课程设计之黑白棋游戏,c语言课程设计黑白棋游戏.doc

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp学术论文&nbsp>&nbsp大学论文 c语言课程设计黑白棋游戏.doc26页 本文档一共被 ...

  5. c语言课程设计找出肇事车牌,C语言课程设计报告.doc

    C语言课程设计报告 <C语言程序设计> 课程设计报告 (学年 第 学期) 专 业: 班 级: 姓名学号: 姓 名: 指导教师: 成 绩: 目 录 一.课程设计的目的与要求--------- ...

  6. c语言课程设计文本编辑器实验报告6,C课程设计简易文本编辑器.doc

    C课程设计简易文本编辑器 目录 第一章 课程设计目的和要求1 1.1课程设计的目1 1.2 基本要求1 第二章 课程设计任务内容2 2.1 设计背景2 2.2简易文本编辑器设计内容2 第三章 详细设计 ...

  7. c语言课程设计作业红白球,c语言课程设计报告.doc

    <c语言课程设计报告.doc>由会员分享,可在线阅读,更多相关<c语言课程设计报告.doc(28页珍藏版)>请在装配图网上搜索. 1.C程序设计课程设计学 院: * 专 业: ...

  8. c语言课程设计猜数字游戏报告,C语言课程设计猜数字游戏报告

    C语言课程设计猜数字游戏报告 C 语言课程设计----猜数字1摘 要该 软 件 在 Windows 系 统 上 为 玩 家 提 供 猜 数 字 游 戏的 基 本 功 能 , 游 戏 用 户 可 以 选 ...

  9. C 语言课程设计 最终答辩版 学生通讯录管理系统

    <span style="font-family: Arial, Helvetica, sans-serif;">/*</span> *********** ...

  10. 万年历单片机课程设计百度文库_单片机电子万年历课程设计最终版(样例3)...

    <单片机电子万年历课程设计.doc>由会员分享,可免费在线阅读全文,更多与<单片机电子万年历课程设计(最终版)>相关文档资源请在帮帮文库(www.woc88.com)数亿文档库 ...

最新文章

  1. python个人项目-个人博客二|创建项目
  2. Hystrix断路器(五)
  3. Android Spinner值不显示,选择列表正常
  4. 如何用html绘制阴影图形,HTML5 给图形绘制阴影
  5. SAP Cloud for Customer(C4C)前台显示的数据是如何从后台读取的
  6. 可编程CDN – EdgeScript应用场景、语言速览和实操演示
  7. linux脚本怎怎么屏蔽段落,怎么写shell脚本才能不耍流氓?
  8. HDU 1222 Wolf and Rabbit
  9. 设计模式学习笔记(5) - 策略模式
  10. socket的tcp连接中的监听套接字和已连接套接字
  11. 用友业务单据生成凭证如何修改凭证金额
  12. 中兴新支点操作系统上的文件小贴士
  13. android自定义view设置背景颜色,Android View的几种背景颜色设置
  14. 全球与中国云浏览器隔离市场深度研究分析报告
  15. Minecraft 1.19.2 Fabric模组开发 13.自定义村民
  16. 品达通用权限系统(Day 1~Day 2)
  17. 设计模式(三)代理设计模式
  18. 应用层的HTTP和HTTPS
  19. 5万块钱的笔记本,没能让苹果“炸场”
  20. 蠕虫病毒html,HTML 感染 DropFileName = “svchost.exe” Ramnit 蠕虫病毒 查杀解决办法

热门文章

  1. Java List remove()方法– ArrayList remove()
  2. linux压缩命令gzip_Linux gzip命令示例
  3. VS2022支持.net4.0和.net4.5SDK
  4. 有助提高效率的Web前端开发框架有哪些?
  5. 为什么要是用R语言?
  6. 乾颐堂军哥HCIE9-解决BGP路由黑洞、聚合的各种参数以及RR基础
  7. 关于局云混合的新思路
  8. C#获取IP和整数IP方法
  9. oracle linux下数据迁移到不同服务器
  10. Unity 2D Skeletal Animation