char如何转成handle,急

wjohenw 2009-10-09 09:58:15
我将一个dialog的handle保存,如0x00040b84, 如果将字符0x00040b84 转车 handle的

char l_atcTemp[20];
memset(l_atcTemp,0x00,sizeof(l_atcTemp));
strcpy(l_atcTemp,"0x00040b84");

handle l_hTemp1;

l_hTemp1 怎么得到 0x00040b84,谢谢!
...全文
158 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
simoreg 2009-10-10
  • 打赏
  • 举报
回复
10楼和11楼的挺好
simoreg 2009-10-10
  • 打赏
  • 举报
回复
楼主的关键问题是从一个16进制的字符串转化为一个32位的整数,我不知道有没有现成的函数或者类库支持这种转化,我写了一个,大致思路是,从您的最后一个字符开始,直至第二个字符,分别乘以256*256*256、256*256、256、1,它们之和就是您要的数!
程序如下:


VC++6.0下测试正常

DWORD CHexToIntDlg::HexToInt(char *lpszHex)
{

//下面是相关的ASCII码
/* 48 60 30 0
49 61 31 1
50 62 32 2
51 63 33 3
52 64 34 4
53 65 35 5
54 66 36 6
55 67 37 7
56 70 38 8
57 71 39 9
58 72 3A :
59 73 3B ;
60 74 3C <
61 75 3D =
62 76 3E >
63 77 3F ?
64 100 40 @
65 101 41 A
66 102 42 B
67 103 43 C
68 104 44 D
69 105 45 E
70 106 46 F

*/

UINT nLen;
nLen=strlen(lpszHex);

LONG iResult,iSqTmp;
iResult = 0;


UINT i,j;
char c;
for (i=0;i<nLen-2;i++)
{
iSqTmp=1;
c=toupper(lpszHex[nLen-i-1]);
if (c<=70&&c>=48)
{
if (c>=65)
{
c-=7;
}
for (j=0;j<i;j++)
{
iSqTmp*=16;
}
iResult+=iSqTmp*(c-48);

}

}

return iResult;
}

得到了这个整数,您就可以任意转化为任何您需要的指针类型了,当然包括handle
MoXiaoRab 2009-10-09
  • 打赏
  • 举报
回复
句柄其实就是Long,你只要把char *转换成Long就好了,LS提供的几个函数都很有用
  • 打赏
  • 举报
回复
提供一种方法,免得类型转来转去出错.

存储HANDLE
struct Tag_STRUCT
{
HWND hWnd;
} ;
struct Tag_STRUCT Struct;

Struct.hWnd = m_hWnd;
//把包含句柄的结构体写入ini文件
WritePrivateProfileStruct("Section","Key",&Struct,sizeof(Struct),"C:\\1.ini");

读取HANDLE
struct Tag_STRUCT
{
HWND hWnd;
} ;
struct Tag_STRUCT Struct;
//从包含句柄的结构体的ini文件读取HANDLE
GetPrivateProfileStruct("Section","Key",&Struct,sizeof(Struct),"C:\\1.ini");
delphiwcdj 2009-10-09
  • 打赏
  • 举报
回复
anothor way

char *p="0x10";
char *str;
int i = (int)strtol(p, &str, 16);//16进制
printf("%d",i);
一条晚起的虫 2009-10-09
  • 打赏
  • 举报
回复
HANDLE handle = (HANDLE)strtol(str,NULL, 16);
delphiwcdj 2009-10-09
  • 打赏
  • 举报
回复
这个可以 mark

char szValue[] = "0x0010";
int nValude = 0 ;
sscanf( szValue,"%x",&nValude);
printf("%d",nValude);
wjohenw 2009-10-09
  • 打赏
  • 举报
回复
楼上的 可能没看清楚,我说的是

handle l_hTemp1;


handle类型
delphiwcdj 2009-10-09
  • 打赏
  • 举报
回复

字符串转换为其它数据类型
strcpy(temp,"123");

如果是:短整型(int)
i = atoi(temp);

如果是:长整型(long)
l = atol(temp);

如果是:浮点(double)
d = atof(temp);
wjohenw 2009-10-09
  • 打赏
  • 举报
回复
请写出代码,谢谢!
wjohenw 2009-10-09
  • 打赏
  • 举报
回复
你们没测一下吗
wjohenw 2009-10-09
  • 打赏
  • 举报
回复
cannot convert from 'int' to 'void *'
delphiwcdj 2009-10-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fox000002 的回复:]
atoi
atol
[/Quote]
转换为整形
wjohenw 2009-10-09
  • 打赏
  • 举报
回复
楼上的,不行啊
fox000002 2009-10-09
  • 打赏
  • 举报
回复
atoi
atol

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧