vc中把字符串转换成16进制数的函数

本文介绍了一个用于将输入的字符串转换为十六进制数据的函数TransData。该函数接收一个CString类型的输入字符串,并返回一个布尔值以指示转换是否成功。文章详细解释了函数的工作原理及其内部流程。
/*------------------------------------------------------------

函数名 : 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++;
}   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值