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

如何将char*的一个buffer中的每一位都按照Unicode字符串16进制输出呢?

楼主qhgary(Gary)2006-05-02 14:34:47 在 C/C++ / C++ 语言 提问

比如buffer为:  
  1234  
   
  输出为:  
  0x   [   31   32   33   34   ]  
   
  输入的1234为ansi,输出的为Unicode字符串。 问题点数:100、回复次数:15Top

1 楼chenhu_doc(^0^纯一狼^0^ 看书看到大笑,直到不能自已)回复于 2006-05-02 14:40:41 得分 0

 
    you   should   add   a   uppercase   'T'   before   that   which   you   want   to   deal   with..    
    for   example:  
    T'a'Top

2 楼qhgary(Gary)回复于 2006-05-02 14:42:13 得分 0

能否把这段代码写出来看看?Top

3 楼chenhu_doc(^0^纯一狼^0^ 看书看到大笑,直到不能自已)回复于 2006-05-02 14:55:40 得分 0

wait   for   a   moment...........Top

4 楼chenhu_doc(^0^纯一狼^0^ 看书看到大笑,直到不能自已)回复于 2006-05-02 14:58:16 得分 0

oh...   my   god   ,,,   i'm   wrong   just   now    
   
  it   should   be     L'a'     (the   type   of   wchar_t)  
   
  Top

5 楼chenhu_doc(^0^纯一狼^0^ 看书看到大笑,直到不能自已)回复于 2006-05-02 15:01:37 得分 40

Unicode字符集用wchar_t数据类型。Unicode字符串用L前缀起头,如:  
   
      wchar_t     wch   =   L'1';             //   2   个字节,   0x0031  
   
      wchar_t*   wsz   =   L"Hello";     //   12   个字节,   6   个宽字符  
   
   
  //至于要求的详细代码;   我看   wchar_t     wch   =   L'1';             //   2   个字节,   0x0031  
  就已经非常详细了     呵呵  
  Top

6 楼qhgary(Gary)回复于 2006-05-02 15:20:01 得分 0

不写出来的确难以发现问题...  
  我不是要把静态的字符串打印出来,而是动态的。  
  比如我给你一个buffer,   char*的。  
  要求输出为unicode的16进制格式。  
  如何把L加在指针的前面???  
  而且如何把里面的每一位一个个取出来呢?Top

7 楼chenhu_doc(^0^纯一狼^0^ 看书看到大笑,直到不能自已)回复于 2006-05-02 15:44:27 得分 0

1.接受所谓的动态的字符串  
  2.而且如何把里面的每一位一个个取出来呢?   //   不用的   char   *   a   和   char   a[]   不要看的太开了。。所以第二个问题不成立。。。。    
  3.如何把L加在指针的前面???//   lz可以到网上搜一下Top

8 楼chenhu_doc(^0^纯一狼^0^ 看书看到大笑,直到不能自已)回复于 2006-05-02 15:45:04 得分 0

哇,看来是班门弄斧了。。。。。。。   我才四个裤衩Top

9 楼qhgary(Gary)回复于 2006-05-02 15:48:09 得分 0

可我这个是buffer,不一定里面是字符串阿,不能用L的。  
  里面如果有2进制数据,碰到0就会以为结束了。Top

10 楼qhgary(Gary)回复于 2006-05-02 15:57:51 得分 0

我对unicode这块不熟悉,能否写段代码看看呢?  
  注意不能使用mfc,还有就是这个buffer是  
  2进制数据,不是字符串。Top

11 楼chenhu_doc(^0^纯一狼^0^ 看书看到大笑,直到不能自已)回复于 2006-05-02 22:20:54 得分 0

2进制数据   ??????  
     
  字符串在内存中的表示形式也是2进制数据呀。。。。。  
  关键不是什么字符不字符的问题,而是在如何把L加在指针的前面???//Top

12 楼qhgary(Gary)回复于 2006-05-03 00:40:18 得分 0

那如何把L加在指针前面呢?  
  不能用那些A2W的宏,因为我不能用MFC.Top

13 楼Jedimaster(CRH = 耻辱号)回复于 2006-05-03 09:47:25 得分 10

http://www.boost.org/doc/html/program_options/design.html  
   
  这篇文章可能有些用Top

14 楼amziwei(潜城)回复于 2006-05-03 12:49:40 得分 40

这个......  
   
  如果楼主可以确定这个   char   *pBuff   是字符串(即中间没有0x00这样的直),   则可以用  
  MultiByteToWideChar()这个函数来把   char   型转为   wchar_t型  
  注意:如果中间有0x00这样的值,   这个函数会把你的   pBuff   从这里截断.  
   
  如果这只是一个"二进制"的Buff,   要把它转为wchar_t型,   倒有一个笨方法,   如下:  
  分配一个两倍大的Buff,   依次将每一个16位的前8位置0   后8位置相应的   pBuff值   即可  
   
  wchar   _t   *MyCharToWchar(char   *pBuff,   int   iLen)  
  {  
   
  wchar_t   *pwBuff=(wchar_t   *)malloc(iLen*2);  
  if(NULL   ==   pwBuff)  
  return   NULL;  
   
  char   *pTem=(char   *)pwBuff;  
  for(int   i=0;   i<iLen;   i++)  
  {  
  pTem=0;  
  pTem++;  
  pTem=pBuff[i];  
  pTem++;  
  }  
   
  return   pwBuff;  
  }Top

15 楼amziwei(潜城)回复于 2006-05-03 13:02:10 得分 10

"Unicode字符串16进制"  
  "输出的为Unicode字符串"&&"可我这个是buffer,不一定里面是字符串阿"  
   
  楼主你的话貌似有点矛盾,   请把话说清楚一点  
   
  既然输入的char   *pBuff   不为字符串,   那么输出的unicode   Buff也就不应该作字符串字符串处理  
   
  另外   16进制只是一种外在的表示方法   能用来表示   char   也能表示   unicode  
  "Unicode字符串16进制"     ??????????????   -_-!     16位?!Top

相关问题

关键词

得分解答快速导航

  • 帖主:qhgary
  • chenhu_doc
  • Jedimaster
  • amziwei
  • amziwei

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

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