CString字符串转换为十六进制字符串

最近在做项目时遇到这个问题,比如将汉字“冲”转换后为 “51B2”,程序使用的是unicode字符集,下面是通过查资料后整理的解决方法:

//---------------------------------------------------------------------
//函数:W2C
//功能:将16位wchar_t转换为 8位char[2]
//参数:w_cn为待转换的16位字符,c_cn[]为转换后的8位字符
//备注:wchar_t的高位字节应该存储在char数组的低位字节
//作者:chuchong

//---------------------------------------------------------------------
void StyleConvert::W2C(wchar_t w_cn , char c_cn[])
{
    //following code convert wchar to char
    c_cn[0] = w_cn >> 8 ;
    c_cn[1] = (char)w_cn ;
}
//-------------------------------------------------------------------
//函数:ConvertWCHARToHex
//功能:将16位字符串转换为十六进制字符串
//参数:待转换的字符串,字符串长度
//返回值:转换后的字符串
//作者:chuchong
//-------------------------------------------------------------------
CString StyleConvert::ConvertWCHARToHex(CString Data, long nDataLength)
{
 CString sResult("");
 for (long nLoop=0; nLoop<nDataLength; nLoop++)
 {
  wchar_t ch = Data.GetAt(nLoop);
  //将wchar_t转换为char[2]
  char c_cn[2]={'0'};
  W2C(ch,c_cn);

  static const char *hex = "0123456789ABCDEF";
  for(int i=0;i<2;i++)
  {
   unsigned char chHexA = hex[((unsigned char)(c_cn[i]) >> 4) & 0x0f];
   unsigned char chHexB = hex[(unsigned char)(c_cn[i]) & 0x0f];
   sResult += (char)chHexA;
   sResult += (char)chHexB;
  }
 }
 return sResult;
}

时间: 2024-12-31 08:17:33

CString字符串转换为十六进制字符串的相关文章

asp.net 10进制字符串转换为十六进制字符串

asp教程.net 10进制字符串转换为十六进制字符串 public string strtohex(string mstr) //返回处理后的十六进制字符串     {     return bitconverter.tostring(     asciiencoding.default.getbytes(mstr)).replace("-", " ");     } /* strtohex */    16进制字符串转换为10进制字符串  public stri

C++实现数字转换为十六进制字符串的方法_C 语言

本文实例讲述了C++实现数字转换为十六进制字符串的方法.分享给大家供大家参考.具体如下: function toHex(number, min) { var hexes = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F']; var hex = ''; var min = min || 2; var nibble; do { nibble = number & 0x0f; number

Viusla Basic 6..0 语言编写一个函数,把uncode字符串转换为utf-8字符串

问题描述 Viusla Basic 6..0 语言编写一个函数,把uncode字符串转换为utf-8字符串 Viusla Basic 6..0 语言编写一个函数,把uncode字符串转换为utf-8字符串 解决方案 dim e as object Set?e=CreateObject("MSScriptControl.ScriptControl") e.Language?=?"javascript" dim d as stringd=?e.Eval("en

Html字符串转换为json字符串的问题

问题描述 Html字符串转换为json字符串的问题 转换后: 最后那个p标签为什么也被转了? 解决方案 因为对于/这个字符,它被转义成/了. 解决方案二: 你需要先解析 HTML 格式,因为 和 是 HTMP 段落的标志. 解决方案三: 你用什么转json的呢,这里面并没有json格式的数据啊,你想把他解析成标签为key,字符串为值得json数据么? 如果是这样的话,就需要解析html标签及其内容,可以存入hashmap容器中,然后再用json解析工具直接解析成json就好了啊. 解决方案四:

php bin2hex 字符串转换为十六进制值

语法 bin2hex(string) */ $str="1001";           //定义二进制字符串 $result=bin2hex($str);         //执行转换操作 echo $result;           //输出转换后的结果,3663

asp实现二进制字符串转换为Unicode字符串_应用技巧

若需要utf-8格式,请自行将下面的GB2312改成utf-8. ' 二进制转字符串,否则会出现乱码的!  Function sTb(vin)         Const adTypeText = 2         Dim BytesStream,StringReturn         Set BytesStream = Server.CreateObject("ADODB.Stream")  With BytesStream        .Type = adTypeText  

java中byte数组与十六进制字符串相互转换

最近在做加密算法的研究和使用,经常会用到byte数组和十六进制字符串的转换.之前对于此类问题我一般都是使用BigInteger这个类转换一下算了,这样为了看输出不是乱码.这其实都不是根本上的解决方案. 最简单的转换方法: /** * @see 将byte[]数组转换为String字符串 * @author Herman.Xiong * @date 2014年5月5日 17:15:42 * @param data byte数组 * @return String 转换后的字符串 */ public

Java将字节转换为十六进制代码分享_java

本文部分代码摘录自网上,并稍加整理,用于字节与十六进制之间的转换. /** * reference apache commons <a * href="http://commons.apache.org/codec/">http://commons.apache.org/codec/</a> * * byte占用8位,十六进制字符占用4位.所以可以把一个byte转换成两个相应的十六进制字符,即把byte的高4位和低4位 * 分别转换成相应的十六进制字符H和L,并

将一个十六进制字符串转换为十进制数值的问题

在程序中,我们有时需要将一个十六进制字符串转换为十进制数字.比如:char *ptr="0x11";int n=0;//我们想让n等于0x11,即17 通常我们在C中,想将一个字符串转换为一整形数字,通常会使用下面的方法:   char *ptr="123";       int n=0;   n=atoi(ptr);   printf("%d/n",n);   //输出:123     但是atoi库函数只能将十进制字符串转化为int整形,比如