UNICODE工程中,由十六进制的unicode字符内码转换成unicode字符(双字节)

这段程序片段是根据“一种字符串转化为16进制显示的算法”(http://www.cppblog.com/qinqing1984/archive/2009/06/27/88636.html)作者提供的方法,自己反推出的,感谢qinqing1984博客

CString HexToString(CString strHex)
{
 CString  strRst;

if (strHex.GetLength() >= 2 && strHex.Left(2) == _T("0x"))
  strHex = strHex.Mid(2);

if (strHex.IsEmpty())
  return strRst;

if (strHex.GetLength() % 4 != 0)
  return strRst;

int   nLen = strHex.GetLength();
 wchar_t  *pstr = new wchar_t[nLen + 1];
 memset(pstr, 0, nLen + 1);
 _tcscpy(pstr, strHex);
 wchar_t* pstrT = pstr;

for (int i = 0; i < nLen; i = i + 4)
 {
  //
  char   ch1 = (char)(*pstr++);
  unsigned char uc1;
  if (ch1 >= '0' && ch1 <= '9')
   uc1 = ch1 - '0' + 0;
  else
   uc1 = ch1 - 'A' + 10;
  uc1 = uc1 << 4;

//
  char   ch2 = (char)(*pstr++);
  unsigned char uc2;
  if (ch2 >= '0' && ch2 <= '9')
   uc2 = ch2 - '0' + 0;
  else
   uc2 = ch2 - 'A' + 10;
  uc2 = uc2 & 0x0F;

char   ch12 = uc1 | uc2;

//
  char   ch3 = (char)(*pstr++);
  unsigned char uc3;
  if (ch3 >= '0' && ch3 <= '9')
   uc3 = ch3 - '0' + 0;
  else
   uc3 = ch3 - 'A' + 10;
  uc3 = uc3 << 4;

//
  char   ch4 = (char)(*pstr++);
  unsigned char uc4;
  if (ch4 >= '0' && ch4 <= '9')
   uc4 = ch4 - '0' + 0;
  else
   uc4 = ch4 - 'A' + 10;
  uc4 = uc4 & 0x0F;

char   ch34 = uc3 | uc4;

wchar_t   wch12 = (wchar_t)ch12;
  wchar_t   wch34 = (wchar_t)ch34;
  wch12 = wch12 << 8;
  wchar_t   wch = wch12 | wch34;

strRst += wch;
 }

delete []pstrT;

return strRst;
}

UNICODE工程中,由十六进制的unicode字符内码转换成unicode字符相关推荐

  1. 函数组:SCMS_CONV 字符内码转化

    这个函数组包含了一些字符内码转换的函数:包括二进制.十六进制.字符串之间的互相转换. 从函数名称就可以看出它们的作用,这里就不一一说明了. SCMS_BINARY_TO_FTEXT SCMS_BINA ...

  2. java 中文转成_Java将中文转换成unicode字符。

    在看Java国际化程序的实现.从最基础的建立不同国家的属性文件开始吧. 中文:你好! 英语:Hello! 法语:Bonjour! 在属性文件定义时必须按照"名称_国家代码"的形式命 ...

  3. UTF8编码转换成Unicode

    /************************************************************************************************* * ...

  4. java做的一个将中文转换成Unicode码的工具类【转载】做个标记,明天研究下

    这两天在使用RBManager(一个开源工具,用于多国化字符转化)工具的时候觉得很不方便,有的时候只需要知道中文对应的unicode码是多少,不需要这么麻烦的操作,所以就自己写了一个工具,专门用于将中 ...

  5. unicode码转换成中文

    unicode码转换成中文 通过正则匹配出data字符串中的unicode,然后将其转成中文,再用中文替换掉原有的unicode java片段: /*** 将unicode码转换成中文* @param ...

  6. linux 串口 字符 间隔,嵌入式linux编程过成中模块从串口读数需要特定的字符段并且需要每两位字符数组元素转换成一个16进制数(提取特定字符串+字符串转16进制)...

    嵌入式linux编程过成中用到zigbee模块 zigbee从串口读数需要特定的字符段并且需要每两位字符数组元素转换成一个16进制数 (提取特定字符串+字符串转16进制) #include #incl ...

  7. 嵌入式linux编程过成中模块从串口读数需要特定的字符段并且需要每两位字符数组元素转换成一个16进制数(提取特定字符串+字符串转16进制)

    嵌入式linux编程过成中用到zigbee模块 zigbee从串口读数需要特定的字符段并且需要每两位字符数组元素转换成一个16进制数 (提取特定字符串+字符串转16进制) #include<st ...

  8. html标签转换字符类型,java把html标签字符转换成普通字符(反转换成html标签)

    package net.jasonjiang.web; import org.junit.Test; import org.springframework.web.util.HtmlUtils; /* ...

  9. 把数据库中有关枚举项值的数字字符串转换成文字字符串

    原文:把数据库中有关枚举项值的数字字符串转换成文字字符串 标题可能无法表达我的本意.比如,有这样一个枚举: public enum MyChoice { MyFirstChoice = 0, MySe ...

最新文章

  1. 【译】JS基础算法脚本:字符串重复
  2. 关于网络投票的反思2018-11-11
  3. boost::histogram::axis::transform用法的测试程序
  4. oracle if 和,oracle if 和 case语句的使用
  5. html不支持js,解决Firefox不支持Js的InnerHtml问题
  6. 苹果设备解锁工具:iToolab UnlockGo for Mac
  7. 如何把html转为excel,怎么把网页转化为excel
  8. 小程序倒计时,已知过期时间实现倒计时
  9. 高等数学-函数在线绘图工具推荐(精选好用)
  10. WordPress插件 UberGrid 高级相册图片分享中文插件[更新至v2.0.13]
  11. 语句块是什么意思python_《语》字意思读音、组词解释及笔画数 - 新华字典 - 911查询...
  12. Golang的微服务组件之限流器与熔断器
  13. mac蓝牙键盘工具分享——通过mac键盘给iPhone、iPad打字
  14. 从0到1 开启商业与未来的秘密读书笔记
  15. 如何删除在Excel中存在的无效的链接呢
  16. 编写函数long fun(int high,int n),功能是:计算并返回high以内(不包含high)最大的n个素数之和。若不足n个,则到最小素数2为止。例如:若high=100,n=10,则函数
  17. 计算机如何恢复桌面,如何恢复电脑原始桌面
  18. 腰椎间盘突出有哪些明显的症状
  19. momentjs转换格式_使用Momentjs将毫秒转换为小时和分钟
  20. linux配置虚拟ip

热门文章

  1. 毕设小程序随笔-如何在wx.navigateBack()时刷新页面
  2. RBA验厂咨询,RBA认证审核标准文档历史记录,RBA VAP认证现场关键点
  3. 黑苹果隔空投送无法双向传输解决
  4. 中考计算机填空题技巧,中考英语语法填空解题技巧 非常实用
  5. 在虚拟机中,安装Windows10各种语言版本安装详细步骤-举例韩语的ISO安装详细过程
  6. 一文搞懂spring的常用注解
  7. 笔记本预装win8改win7系统的方法
  8. toString(36)中的36表示进制
  9. 如何做好一个程序员——摘自水木清华BBS
  10. ASL Code中的_DSM方法