CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  网络编程

怎么用sock中send发送十六进制数据

楼主linna168(Leah)2004-09-02 02:18:58 在 VC/MFC / 网络编程 提问

char   buff[256];  
  sprintf(buff,"%X%X",0x10050038,0xF4EE2A00);  
  send(clisock,   buff,strlen(buff),   0);  
   
  我想让客户端收到的数据是0x10050038,0xF4EE2A00   (8字节)  
  而不是转成字符串的10050038F4EE2A00(16字节)  
   
  我该怎么才能把十六进制的数据发送到客户端? 问题点数:0、回复次数:11Top

1 楼zhuhuidong(牛人小)回复于 2004-09-02 08:15:20 得分 0

把数据当作字符串,前面加上0x头再发送就行了。  
  char   buff[256];  
  sprintf(buff,"0x%X0x%X",0x10050038,0xF4EE2A00);  
  send(clisock,   buff,strlen(buff),   0);Top

2 楼yuantao(cfan)回复于 2004-09-02 08:41:38 得分 0

发出去的是2进制啊,不分10位,16位啊  
  你接收的时候在自己写个函数,把他转成16进制不就可以了吗,跟转成10进制道理不是一样的吗  
   
  Top

3 楼sharkhuang(走吧走吧!人总会慢慢长大~)回复于 2004-09-02 09:23:49 得分 0

肯定要网络字节续转换哦Top

4 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2004-09-02 09:43:51 得分 0

你接收到字符串后,在转换成十六进制就可以了Top

5 楼jzyhummel(篱影)回复于 2004-09-02 12:05:11 得分 0

所有数据在发送和接收的时候都是char型的,都需要强制转换的,就像你发结构一样,收到的都是char型,还不是要你强制转换到结构中去一样Top

6 楼gdy119(夜风微凉)回复于 2004-09-02 12:35:56 得分 0

UP!Top

7 楼LongLongAgoImBoy(ThereIsAMe)回复于 2004-09-02 12:42:55 得分 0

相同系统平台之间发送:  
  long   lNumber   =   0x77889900;  
  char   *pStrNum   =   new   char[sizeof(long)];  
  memcpy(pStrNum,   &lNumber,   sizeof(long));  
  send(pStrNum,   sizeof(long));  
  delete   []pStrNum;  
  ...  
  char   *pBuf   =   new   char[sizeof(long)];  
  recv(pBuf,   sizeof(long));  
  long   lRecvNum   =   0;  
  memcpy(&lRecvNum,   pBuf,   sizeof(long));  
  delete   []pBuf;  
  ...  
  不同平台直接,没有做过,我想可不可以转换成字符串  
  char   buffer[11];  
  long   lNumber   =   0x77889900;  
  sprintf(buffer,   "0x%08X",   lNumber);  
  send(buffer,   sizeof(buffer));  
  ...  
  receive(buffer,   sizeof(buffer));  
  long   lRecvNum   =   0;  
  sscanf(buffer,"%x",&lRecvNum);  
  ...  
  Top

8 楼LongLongAgoImBoy(ThereIsAMe)回复于 2004-09-02 12:59:44 得分 0

更正:  
  char   buffer[9];  
  long   lNumber   =   0x77889900;  
  sprintf(buffer,   "%08X",   lNumber);  
  send(buffer,   sizeof(buffer));  
  ...  
  receive(buffer,   sizeof(buffer));  
  long   lRecvNum   =   0;  
  sscanf(buffer,"%x",&lRecvNum);  
  ...  
  Top

9 楼DentistryDoctor(不在无聊中无奈,就在沉默中变态)回复于 2004-09-02 13:02:14 得分 0

sprintf(buff,"%X%X",0x10050038,0xF4EE2A00);  
  =>  
  sprintf(buff,"0x%X0x%X",0x10050038,0xF4EE2A00);Top

10 楼sunux(网络飘客)回复于 2004-09-02 13:13:31 得分 0

无论如何发的都是一段buffer,发什么不行。。。。。Top

11 楼xxedge(好钢用在刀刃上)回复于 2004-09-02 14:58:48 得分 0

int   hexbuff[2]  
  hexbuff[0]=0x10050038;  
  hexbuff[1]=0xF4EE2A00;  
  send(clisock,   hexbuff,sizeof(hexbuff),   0);  
   
  如果发送,接受都是windows或都是Unix平台,不用考虑字节顺序问题,  
  收到的8个字节,假如放在data中  
  int   hexdata[2];  
  memcpy((char   *)hexdata,data,sizeof(hexdata));  
  就可以看到十六进制了  
   
   
  Top

相关问题

  • 十六进制的数据如何显示
  • 数据转换问题字符到十六进制
  • 将十进制数据转换为十六进制?
  • 如何在stl的string中保存十六进制数据?
  • 如何把十六进制的数据转换为字符串
  • 如何十六进制数据写进文件
  • 如何在文件中的读取十六进制的数据
  • 刚学数据库,请问有无十六进制字段
  • vb中我把字符串转换为十六进制数据,怎样再把十六进制数据转换为字符串呢。请达人帮助!
  • 怎样将一个十六进制数据转化为一个图象

关键词

  • 数据
  • 转换
  • 平台
  • 十六进制
  • hexbuff
  • pstrnum
  • lrecvnum
  • lnumber
  • 字符串
  • hexdata

得分解答快速导航

  • 帖主:linna168

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo