首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 文件读取 转换类型 [已结贴,结贴人:xuliangone1]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xuliangone1
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 揭贴率:
    发表于:2008-08-21 15:57:23 楼主
    文件内容 (十六进制):
    00 20 00 10 1A 01 00 00 10 00 10 00 。。。。。。

    文件说明:
    00 20 00 10 标签 查找用
    1A 12      一个整数 表示后面的多少个字节是有效字节
    00 00 10 00 10 00 。。。。。。值。。。具体长度由前面连个字节确定

    实现:
    1.找到标签(完成)读取4个字节 然后一个个比较
    2.再读取2个字节。。转换为十进制。。。。。。。。。问题所在

    代码:
      char length[2];
      mFile.Read( length,2);//读取2位 判断值长度
      ??

    下面怎么做 才能得到 十六进制 1A 12  所代表的十进制值
    我所得到的length【0】=26 length[1]=18  根本不对 是需要继续操作还是有别的做法


    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • II_And
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 16:08:241楼 得分:0
    用short .
    short shLen = 0;
    mFile.Read( &length,sizeof(short )); - -#
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xuliangone1
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 16:18:562楼 得分:0
    楼上的方法是不错 可是我要读取的文件 存在一个高地位换位问题
    文件里面 是 1A 12  但是它的实际的值是 12 1A

    这个问题就不好解决了啊 。。。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • greatws
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 23:24:323楼 得分:0
    那你就高低位换一下咯

    有个函数htons,你查下,或者直接用 < <  >>移位运算符也可以,还可以使用MAKEWORD宏,将2个BTYE做成一个WORD
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jimmytom
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 23:59:414楼 得分:20
    你写的1A 12是十六进制,转换成十进制就是26 18你的结果没有错。

    给你个办法,声明一个short(好像占两字节吧)

    short na;
    mFile.Read( &na,2); //如果有类型错误,则用mFile.Read( reinterpret_cast <void *>(&na),2);


    这样直接就保存到一个十进制数里面去了。不用读到一个字符数组里面再转换。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jimmytom
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 00:05:005楼 得分:0
    你写的1A 12是十六进制,转换成十进制就是26 18你的结果没有错。

    给你个办法,声明一个short(好像占两字节吧)

    short na;
    mFile.Read( &na,2); //如果有类型错误,则用mFile.Read( reinterpret_cast <void *>(&na),2);


    这样直接就保存到一个十进制数里面去了。不用读到一个字符数组里面再转换。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Mackz
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 4

      6

      7

    发表于:2008-08-22 01:09:596楼 得分:0
    2个字节用short类型不就可以了?
    short shVal;
    mFile.Read(&shVal, 2);
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved