关于 “更新版本” 的一个程序段,请前辈指教

wendy_welcom 2008-01-23 05:39:59
UCHAR filever; /* file version */

prg_version.data[0] = 0x20; /* reserve */
prg_version.data[1] = 0x20; /* reserve */
prg_version.data[2] = (Va_flheader[slotno - 1].filever + 0x30);
prg_version.data[3] = '.';

hund = (Va_mlpr_flheader[slotno - 1].filerev / 100);
dec = ((Va_mlpr_flheader[slotno - 1].filerev - hund * 100) / 10);
rest = ((Va_mlpr_flheader[slotno - 1].filerev - hund * 100) % 10);
prg_version.data[4] = (hund + 0x30);
prg_version.data[5] = (dec + 0x30);
prg_version.data[6] = (rest + 0x30);
prg_version.data[7] = 0x20; /* reserve*/

这是项目里一段关于更新文件版本的代码, 但我没看懂, 请问那个0x30 是怎么回事啊?为什么要加上 0x30? 谢谢啦。
...全文
106 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wendy_welcom 2008-01-28
  • 打赏
  • 举报
回复
但是Va_flheader[slotno - 1].filever 本来就是无符号Char型, Char型,不就是一个字符么?字符再变字符??
wendy_welcom 2008-01-24
  • 打赏
  • 举报
回复
4楼说:
如果是 int 型的 1 即 0x01 , 加 0x30后变成 0x31 就成了 '1'了

但是Va_flheader[slotno - 1].filever 本来就是无符号Char型, Char型,不就是一个字符么?字符再变字符??
wendy_welcom 2008-01-24
  • 打赏
  • 举报
回复

可是下面这句又怎么解释呢?
hund = (Va_mlpr_flheader[slotno - 1].filerev / 100);

更正一下:
prg_version.data[2] = (Va_flheader[slotno - 1].filever + 0x30);
这句写错了,因该是(Va_mlpr_flheader[slotno - 1].filever + 0x30);

如果是把一个数字变成字符型的,那么Va_mlpr_flheader[slotno - 1].filever 的取值应该是0到9的数字是么?
假设它的值取1
hund = 1/100 那他得值就是0了吧?

这样看来最后的结果应该是_ _ 1.001_ / _2.002_ / _3.003_ 这样的版本号。可是程序出来的结果是_ _ 1.010_ / _ _ 1.200_ / _ _2.000_ 答案不符阿? (下划线代表空格)

friedchicken2002 2008-01-23
  • 打赏
  • 举报
回复
1 0x31
2 0x32
3 0x33
4 0x34
5 0x35
如果是 int 型的 1 即 0x01 , 加 0x30后变成 0x31 就成了 '1'了
lockhall 2008-01-23
  • 打赏
  • 举报
回复
戒指估计猜的对了。

人才啊。
Treazy 2008-01-23
  • 打赏
  • 举报
回复
我猜加0x30

是将数字变成字符!

下面的继续猜!

/* 不写注释谁知道这鬼东西是什么啊 */
goodmrning 2008-01-23
  • 打赏
  • 举报
回复
关注
特点:- 开源诚交志友、任您扩展- 文本语音让您“爱上”聊- 隐蔽型设计、老板键支持- 无视防火墙局域网关障碍- 线程运用及周全的缓冲架构- XML/XSL呈现技术浏览地址:http://www.favnet.cn/Exhibition.aspx?OriginalKeyword=&OriginalPageIndex=0&OriginalPageSize=7&OriginalId=20080423075449842429■ “FavChat 爱聊”平台分为客户端(Windows Application)和服务端(Web Service)两部分,两者采用当前时尚的HTTP/SOAP协议进行通讯,服务器端采用特殊数据结构作为数据的交换媒介,由客户端收集客户操作求主动连接服务器发送和接受数据来完成事务流程。由于自身技术和协议的优势,基本上可以无视防火墙和局域网关障碍,唯一前提是您具备一个支持服务器端Web Service运行的空间。■ 考虑FavChat实际工作中的计算机因素和网络延迟,平台充分地利用线程并发运作和多阶段队列缓冲机制,保证事务处理的顺畅和聊天过程中最重要的全双工能力的完美实现。(参考附件流程图)■ 语音部分则使用当前比较流行的DirectX技术实现。由于该领域网上的资料不多,所以我也是在不断的试验和摸索中找到门路,已封装好的Recorder(录音机)和Player(播放器)类,理应有比较大的参考学习和应用价值。■ 本平台的设计初衷其实是为方便我和妻子日常交流,大型企业里一般都限制即时通讯软件的使用,于是我运用所学开发了具备一定隐蔽性和系统热键功能的私人聊天工具,加上通用型的HTTP协议和XML节点内的密码验证,即使有上网记录也难查出是在干啥米 ^_^ 与爱人聊,会让您越来越“爱聊”哦,客户端通过修改本地配置参数还可以轻易实现个性化的多方畅聊……■ XML也是不得不说的一块,Web Service通讯和本地消息框的呈现,都使用了相关的处理方法。可以说XML是当代程序里不可或缺的一项重要通用技术。FavChat作为开源项目,作者仅在FavNet.cn(附件)和CSDN网站原创发布,其它网站皆为转载,您可以下载源程序参考或进行自由扩展,但尊重分享,尊重开源,保留作者的版权信息或注明来源。项目使用Visual Studio 2008基于.NET Framework 2.0兼容模式开发,您若使用Visual Studio 2005打开,在编译时会出现错误(少量无法识别的C#3.0语法),您可能有必要修改少量非核心代码即可解决。另外,您还需要安装微软 DirectX End-User Runtimes(March 2008)以获得对Microsoft.DirectX和Microsoft.DirectX.DirectSound命名空间的支持。如果您是志同道合的朋友,可以给我来信(HeddaZ@live.com)交流,亦很乐意提供底层的Source互相学习探讨。本程序不尽完善,还各位同僚前辈指教……谢谢!程序采用WinRAR压缩打包-----------FavNet.cn 专勤致精想您所思 专业IT技术服务http://www.FavNet.cn展示技术实力,寻求合作伙伴、合作项目中…… --------------------------------------------- Powered by FavNet.cn 专业IT技术服务 [Plusii 您的企业附加值]旗下品牌

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧