6 个解决方案
#1
CString str ="0x30,0x40";
int x,y;
sscanf(str,"%x,%x",&x,&y);
str.Format("%x",x+y);
//str.Format("%d",x+y);
int x,y;
sscanf(str,"%x,%x",&x,&y);
str.Format("%x",x+y);
//str.Format("%d",x+y);
#2
技术上可行
符合你的要求吗?
如果不明白,你可以
(1),给我发短消息(请附帖子的地址).
(2),根据http://www.vcshare.net上的联系方式与我联系,推荐QQ.
(3),如果问题简单,请在http://www.vcshare.net/bbs上发帖.
如果问题比较复杂,请把代码压成*.rar当附件发在我的论坛上发帖.
同时在www.****.net上发帖,并给出在我的论坛的链接.
---------------
压代码前,请先删除debug,release文件夹,及*.opt,*.ncb,*.plg,*.aps.
符合你的要求吗?
如果不明白,你可以
(1),给我发短消息(请附帖子的地址).
(2),根据http://www.vcshare.net上的联系方式与我联系,推荐QQ.
(3),如果问题简单,请在http://www.vcshare.net/bbs上发帖.
如果问题比较复杂,请把代码压成*.rar当附件发在我的论坛上发帖.
同时在www.****.net上发帖,并给出在我的论坛的链接.
---------------
压代码前,请先删除debug,release文件夹,及*.opt,*.ncb,*.plg,*.aps.
#3
举个例子先?
一组字符串----什么字符串?
一组字符串----什么字符串?
#4
CString str;
str.Format("%x", 16);
str.Format("%x", 16);
#5
字符串是字符和数字,有大写和小写字母还包括数字0--9
#6
以前别人写的,我改了改,不知道对楼主有没有帮助。
/*------------------------------------------------------------
函数名 : 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++;
}
memcpy(OutStr, Str, j);
return TRUE;
}
/*------------------------------------------------------------
函数名 : 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++;
}
memcpy(OutStr, Str, j);
return TRUE;
}
#1
CString str ="0x30,0x40";
int x,y;
sscanf(str,"%x,%x",&x,&y);
str.Format("%x",x+y);
//str.Format("%d",x+y);
int x,y;
sscanf(str,"%x,%x",&x,&y);
str.Format("%x",x+y);
//str.Format("%d",x+y);
#2
技术上可行
符合你的要求吗?
如果不明白,你可以
(1),给我发短消息(请附帖子的地址).
(2),根据http://www.vcshare.net上的联系方式与我联系,推荐QQ.
(3),如果问题简单,请在http://www.vcshare.net/bbs上发帖.
如果问题比较复杂,请把代码压成*.rar当附件发在我的论坛上发帖.
同时在www.****.net上发帖,并给出在我的论坛的链接.
---------------
压代码前,请先删除debug,release文件夹,及*.opt,*.ncb,*.plg,*.aps.
符合你的要求吗?
如果不明白,你可以
(1),给我发短消息(请附帖子的地址).
(2),根据http://www.vcshare.net上的联系方式与我联系,推荐QQ.
(3),如果问题简单,请在http://www.vcshare.net/bbs上发帖.
如果问题比较复杂,请把代码压成*.rar当附件发在我的论坛上发帖.
同时在www.****.net上发帖,并给出在我的论坛的链接.
---------------
压代码前,请先删除debug,release文件夹,及*.opt,*.ncb,*.plg,*.aps.
#3
举个例子先?
一组字符串----什么字符串?
一组字符串----什么字符串?
#4
CString str;
str.Format("%x", 16);
str.Format("%x", 16);
#5
字符串是字符和数字,有大写和小写字母还包括数字0--9
#6
以前别人写的,我改了改,不知道对楼主有没有帮助。
/*------------------------------------------------------------
函数名 : 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++;
}
memcpy(OutStr, Str, j);
return TRUE;
}
/*------------------------------------------------------------
函数名 : 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++;
}
memcpy(OutStr, Str, j);
return TRUE;
}