Chinaunix首页 | 论坛 | 博客
  • 博客访问: 424979
  • 博文数量: 69
  • 博客积分: 957
  • 博客等级: 准尉
  • 技术积分: 1161
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-26 14:54
文章分类

全部博文(69)

文章存档

2013年(15)

2012年(12)

2011年(42)

分类: C/C++

2012-08-01 13:30:13

自己写的转换函数:用来处理数据库和注册表中的blob块,可以处理汉字

传入传出的指针均在外部已指定足够大的内存块

//转换TCHAR字符串为BYTE类型的字符串
//参数:输入,TCHAR*
//参数:输出,BYTE*
//参数:输入,传入的字符串长度
//返回:转换后的BYTE类型的字符串的长度
int StrToBin(TCHAR* inWord, BYTE* OutBin, int source_len)
{
 int t;
 int t2;
 int count = 0;
 BYTE temBin[2];
 temBin[0] = 1;
 temBin[1] = 1;

 if (source_len < 1)
  return 0;

 for(t = 0 ;t < source_len; t ++)
 {  
  t2 = inWord[t];
  if( t2 > 127 )
  {
   temBin[0] =  t2 >> 8 ;/// 256;
   temBin[1] =  t2;
   OutBin[count] = temBin[0];
   count += 1;
   OutBin[count] = temBin[1];
   count += 1;
  }
  else
  {
   OutBin[count] = t2;
   count += 1;
  }
 }
 return count;
}

//转换BYTE字符串为TCHAR类型的字符串
//参数:输入,BYTE*
//参数:输出,TCHAR*
//参数:输入,传入的字符串长度
//返回:转换后的TCHAR类型的字符串的长度
int BinToStr(BYTE* sbyte, TCHAR* string, int len)
{
 int TemWordD;
 int p = 0;

 if(len < 1)
  return 0;
   
 for(int i = 0; i < len; i++)
 {
  if( sbyte[i] > 127)
  {
   if(( i + 1) == len)
   {
    TemWordD = sbyte[i];
   }
   else
   {
    TemWordD = (sbyte[i] * 256) | sbyte[i + 1];
    i++;
   }
  }
  else
  {
   TemWordD = sbyte[i];
  }
       
  if(i < len )
  {
   string[p] = (TCHAR)TemWordD;
   p++;
  }
   
 } 
 if(p > 0)
  string[p] = _T('\0');

 return p ;
}

阅读(5550) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~