分类: 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 ;
}