CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

手机短信二进制编码转CHAR *字符窜问题,急急急~~~~!

楼主hyqyyy(飞一样的感觉)2003-08-04 16:54:23 在 VC/MFC / 基础类 提问

手机发到SP的二进制编码转字符窜,请给代码谢谢~~!一定给高分~!  
  不够可以再加分~!  
  问题点数:100、回复次数:12Top

1 楼hyqyyy(飞一样的感觉)回复于 2003-08-04 17:24:44 得分 0

UPTop

2 楼awnucel(西大耻犹未雪,南京恨何时灭&抵制日货)回复于 2003-08-04 17:46:17 得分 20

upTop

3 楼hyqyyy(飞一样的感觉)回复于 2003-08-04 18:08:24 得分 0

谢谢大家UP一下  
  说明一下,我收到的五位长的二进制码?解出来应该为"120050002"  
  我用下面的代码解出来是"1200350002"  
        int   strlength;  
        CString   strHex,m_strFileContents;  
        for   (int   nIndex   =   0;   nIndex   <   length;   nIndex++)  
        {  
              if   (nIndex   ==   0)  
                      strHex.Format(_T("%2.2X"),   pin[nIndex]);  
              else   if   (nIndex   %   16   ==   0)  
                      strHex.Format(_T("\r\n%2.2X"),   pin[nIndex]);  
              else   if   (nIndex   %   8   ==   0   )  
                      strHex.Format(_T("-%2.2X"),pin[nIndex]);  
              else    
                      strHex.Format(_T("%2.2X"),   pin[nIndex]);  
   
              m_strFileContents   +=   strHex;  
              }  
          strlength   =   m_strFileContents.GetLength();  
          memcpy(pout,m_strFileContents,strlength);  
   
  收到8位的二进制码解出来应该是"12005001#06"可解出来是16位的窜,不知如何作位移  
  请高手指点Top

4 楼canoe_eyes(阿里)回复于 2003-08-04 18:53:55 得分 20

我很有兴趣试一试,  
  问:  
      1.   Length   什么意思。  
      2.   能多给几组数据吗?(   真确的,错误的   );  
  能够再详细更好了。  
  ali_bo@eyou.com  
  谢谢!Top

5 楼hyqyyy(飞一样的感觉)回复于 2003-08-05 13:47:23 得分 0

帮帮忙~~!  
  1.可以使用base64编码  
  2.可以使用bin   to   hex表示  
      比如  
   
    void   encode(   byte   *pin   ,   ulong   length   ,   char   *pout)  
  {  
  char   temp_buf[3];  
  for   (   ulong   i   =   0;i<length;i++)  
  {  
  sprintf(temp_buf,"%02x",*(pin+i));  
  *(pout+i<<1)   =   temp_buf[0];  
  *(pout+i<<1+1)=temp_buf[1];  
  }  
  }  
  我查到这个方法可能可行,得最后两句有问题?  
  可有大侠知道怎么改Top

6 楼dailiangcm(dailiang)回复于 2003-08-05 13:50:45 得分 20

是不是说的PDUTop

7 楼grasshopperliu(老前辈——曾经沧海)回复于 2003-08-05 14:01:18 得分 10

gzTop

8 楼hyqyyy(飞一样的感觉)回复于 2003-08-05 17:02:46 得分 0

UP有分,谢谢Top

9 楼hyqyyy(飞一样的感觉)回复于 2003-08-05 17:20:15 得分 0

UPTop

10 楼kwiner(ak.net)回复于 2003-08-05 17:27:47 得分 30

////////////////////////////////////////////////////////  
  //功能:将十六进制编码转换成可显字串  
  //注意:形参字串长度应为4的倍数  
   
  bool   CShortMessage::PDU2Chinese(CString   strPdu,CString&   strResult)  
  {  
  TCHAR   ch,ch2byte;  
  int   iByteCount;  
   
  int   nSrcLength=strPdu.GetLength();  
   
  if   (nSrcLength==0)  
  {  
  strResult="";  
  return   true;  
  }  
   
  if   (nSrcLength<4)     //不足4字节  
  {  
  for(int   i=0;i<4-nSrcLength;i++)   strPdu="0"+strPdu;     //在前面补0  
  nSrcLength=4;  
  }  
   
  if   (nSrcLength%4!=0)     //非完整字节信息  
  {  
  return   false;  
  }  
   
  iByteCount=0;   //一汉字两字节,标志当前处理到第几字节  
  strPdu.MakeUpper();     //全部改成大写  
   
          for(int   i=0;i<nSrcLength;i+=2)  
          {  
  ch=0;  
  if   (iByteCount==0)  
  {  
  ch2byte=0;  
  }  
  iByteCount++;  
   
                  //   输出高4位  
                  if(strPdu[i]>='0'   &&   strPdu[i]<='9')  
                  {  
                          ch   =   (strPdu[i]   -   '0')   <<   4;  
                  }  
                  else  
                  {  
                          ch   =   (strPdu[i]   -   'A'   +   10)   <<   4;  
                  }  
   
                  //   输出低4位  
                  if(strPdu[i+1]>='0'   &&   strPdu[i+1]<='9')  
                  {  
                          ch   |=   strPdu[i+1]   -   '0';  
                  }  
                  else  
                  {  
                          ch   |=   strPdu[i+1]   -   'A'   +   10;  
                  }  
   
  if(iByteCount==1)  
  {  
  ch2byte   =   ch<<8;  
  }  
  else  
  {  
  ch2byte   |=   ch;  
  iByteCount=0;  
  strResult+=ch2byte;  
  }      
          }    
   
          return   true;  
  }Top

11 楼hyqyyy(飞一样的感觉)回复于 2003-08-06 10:42:10 得分 0

kwiner这要的是二进制转字符窜,其中二进制参数为指向二进制数的参数,你能否给出一段代码,谢谢~!!!Top

12 楼hyqyyy(飞一样的感觉)回复于 2003-08-06 17:58:46 得分 0

问题已解决,原来不全是二进制码,中间还杂有ASCII码,得作个判断,谢谢各位~!!!!Top

相关问题

  • 字符串转二进制
  • BASE64编码转换成二进制
  • BASE64编码转换成二进制
  • 字符型与二进制字符类型有何差别??
  • 如何把二进制字符串转换为ASCII字符串??
  • 如何将十进制字符转化成二进制字符
  • 如何从串行口读出大于128的字符,用二进制形式?另外数据的转换问题:char->byte?
  • **** 关于将字符串写进二进制文件
  • 字符串和二进制的互换(解决一定给分)
  • 怎样将二进制转换成字符串?在线等待。。。

关键词

  • 二进制
  • 字符
  • 编码
  • 代码
  • 手机
  • 字符窜
  • strpdu
  • 二进制编码转
  • 谢谢
  • nindex

得分解答快速导航

  • 帖主:hyqyyy
  • awnucel
  • canoe_eyes
  • dailiangcm
  • grasshopperliu
  • kwiner

相关链接

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

广告也精彩

反馈

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