2013-09-14 2 views
1

У меня есть метод WriteValue, который записывает значение DWORD в реестр:Как преобразовать символ, представляющий шестнадцатеричное значение в 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, в моем случае)?

+0

интересно, в чем моя проблема в моем вопросе, кто-то проголосовал за меня. –

ответ

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

может помочь вам.

+0

спасибо, ваш ответ тоже работает –

+3

@MaximShoustin: 'strtol' - это превосходное решение, поскольку оно дает вам точную обработку ошибок (unparsable text, overflow и т. Д.). –

+0

@ KerrekSB согласился –

Смежные вопросы