首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 取长度问题,,,高手来帮帮忙碌..谢谢! [已结贴,结贴人:tengye19840704]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • tengye19840704
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-08-08 18:27:38 楼主
    这里的Data的长度怎么样取出来...我这个方法取出来..把256个字符都取出来了.我想要Data里的那六个字符..必需得取出长度,来.因为我要通信用.这里只是测试一下..高手帮帮忙
    char data[256] = {0x68,0x04,0x43,0x00,0x00,0x00};
        for (int i=0;i <sizeof(data);i++)
    {
    cout < <int(data[i]) < <endl;;
    }
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xkyx_cn
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 2

    发表于:2008-08-08 18:39:391楼 得分:10
    这样的不定长包可以用前4个字节来写入长度,后面再接着写数据,这样取的时候就容易一些:
    C/C++ code
    // package char buffer[260]; char data[256] = {0x68,0x04,0x43,0x00,0x00,0x00}; int len = 6; memcpy(buffer, &len, sizeof(len)); memcpy(buffer + sizeof(len), data, len); // depackage // char buffer[260]; char data[256] = {0}; int len; memcpy(&len, buffer, sizeof(len)); memcpy(data, buffer + sizeof(len), len); for (int i=0;i < len;i++) { cout << int(data[i]) << endl;; }


    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zjz444
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-08 18:39:442楼 得分:0
    C/C++ code
    #include<iostream> #include<string> #include<cctype> #include<fstream> using namespace std; int main() { char data[256] = {0x68,0x04,0x43,0x00,0x00,0x00}; //用strlen取出非零字符以前的。 for (int i=0;i<strlen(data);i++) { cout<<int(data[i])<<endl;; } }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zjz444
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-08 18:41:273楼 得分:10
    C/C++ code
    #include<iostream> #include<string> #include<cctype> #include<fstream> using namespace std; int main() { char data[] = {0x68,0x04,0x43,0x00,0x00,0x00}; //用data[]声明,后面用SIZEOF for (int i=0;i<sizeof(data);i++) { cout<<int(data[i])<<endl;; } }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • tengye19840704
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-08 18:43:404楼 得分:0
    回一楼.
    高手哥好久不见,我那个DATA不固定多长,只从别人那接收来的.我只是测试用一下.
    回二楼
    STRLEN这个函数用了后.后面的那堆'0'就出不来了..我的DATA是接收来的,后面可能还有很多个'0',现在就是问题出在这个'0'上.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • tengye19840704
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-08 18:46:455楼 得分:0
    嗯..三楼的方法是可行....那有没有办法data[256]以这样的形式也像data[]的形式输出那样输出啊..因为在工程里它是个全局变量,所以要有数.条件是不是有点苛刻,呵呵..不好意思..大家集思广义,学习学习!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zjz444
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-09 10:28:216楼 得分:0
    好像是没有什么更好的办法。其实通迅时你在发个长度过来,根据长度提取字取就行了。
    修改 删除 举报 引用 回复

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