vc中把字符串转换成16进制数的函数(如^_^7f^_^->0x7f)
sswanglei 发表于 2007-2-9 16:08:00 /*------------------------------------------------------------ 函数名 : TransData(CString InStr, PUCHAR OutStr) 功 能 : 将字符串转换成十六进制数据 参 数 : CString InStr [in] 输入字符
sswanglei 发表于 2007-2-9 16:08:00 /*------------------------------------------------------------
函数名 : TransData(CString InStr, PUCHAR OutStr)
功 能 : 将字符串转换成十六进制数据
参 数 : CString InStr [in] 输入字符串
PUCHAR OutStr [out] 输出转换后数据的指针
返回值 : BOOL,正确返回TRUE,错误返回FALSE
------------------------------------------------------------*/
BOOL TransData(CString InStr, PUCHAR OutStr)
{
UINT i = 0, j = 0;
UINT len = 0;
UCHAR Str[KEY_LEN * 2];
len = InStr.GetLength();
if ((len % 2) != 0)
{
MessageBox("请按要求输入!", "错误", MB_OK | MB_ICONERROR);
return FALSE;
}
memset(OutStr, 0, sizeof(UCHAR[KEY_LEN]));
memset(Str, 0, sizeof(UCHAR[KEY_LEN * 2]));
strcpy((char*)(Str), InStr.GetBuffer(0));
InStr.ReleaseBuffer();
for(i = 0; i < len; i++)
{
if ((Str[i] > 47) && (Str[i] < 58))
{
Str[i] -= 48;
}
else if ((Str[i] > 64) && (Str[i] < 71))
{
Str[i] -= 55;
}
else if ((Str[i] > 96) && (Str[i] < 103))
{
Str[i] -= 87;
}
else
{
MessageBox("数据格式错误!", "错误", MB_OK | MB_ICONERROR);
return FALSE;
}
}
i = 0;
while(i < len)
{ // 转换
Str[j] = Str[i] * 16 + Str[i + 1];
i += 2;
j++;
}
函数名 : TransData(CString InStr, PUCHAR OutStr)
功 能 : 将字符串转换成十六进制数据
参 数 : CString InStr [in] 输入字符串
PUCHAR OutStr [out] 输出转换后数据的指针
返回值 : BOOL,正确返回TRUE,错误返回FALSE
------------------------------------------------------------*/
BOOL TransData(CString InStr, PUCHAR OutStr)
{
UINT i = 0, j = 0;
UINT len = 0;
UCHAR Str[KEY_LEN * 2];
len = InStr.GetLength();
if ((len % 2) != 0)
{
MessageBox("请按要求输入!", "错误", MB_OK | MB_ICONERROR);
return FALSE;
}
memset(OutStr, 0, sizeof(UCHAR[KEY_LEN]));
memset(Str, 0, sizeof(UCHAR[KEY_LEN * 2]));
strcpy((char*)(Str), InStr.GetBuffer(0));
InStr.ReleaseBuffer();
for(i = 0; i < len; i++)
{
if ((Str[i] > 47) && (Str[i] < 58))
{
Str[i] -= 48;
}
else if ((Str[i] > 64) && (Str[i] < 71))
{
Str[i] -= 55;
}
else if ((Str[i] > 96) && (Str[i] < 103))
{
Str[i] -= 87;
}
else
{
MessageBox("数据格式错误!", "错误", MB_OK | MB_ICONERROR);
return FALSE;
}
}
i = 0;
while(i < len)
{ // 转换
Str[j] = Str[i] * 16 + Str[i + 1];
i += 2;
j++;
}
- 上一篇:怎样用VC限制软件的试用次数
- 下一篇:VC删除文件夹下所有文件的代码
精彩图集