如何将表示十六进制值的char转换为DWORD?

时间:2013-09-14 13:00:06

标签: c dword

我有一个方法WriteValue,它将DWORD值写入注册表:

const char *WriteValue(char* searchHandleId)
{
 //...
 DWORD value =  atoi(searchHandleId); // wrong!!!
 LONG result_write = RegSetValueEx(
                                  hkey,
                                 "hwnd_to_track",
                                  0,
                                  REG_DWORD,
                                  (const BYTE*)&value,
                                   sizeof(value)
                                   );
 //..
} 

问题是searchHandleId表示十六进制数字:

 printf( "Found .... hWnd: (%s)\n", searchHandleId);   

输出:Found .... hWnd: (002F1CE0)

如何将searchHandleId转换为value(在我的情况下是DWORD值)?

2 个答案:

答案 0 :(得分:4)

DWORD value = strtoul(searchHandleId, NULL, 16);

答案 1 :(得分:2)

sscanf(searchHandleId, "%x", &value);

可以帮到你。