【问题标题】:How to convert char that represents hex value to DWORD?如何将表示十六进制值的字符转换为 DWORD?
【发布时间】:2013-09-19 01:36:43
【问题描述】:

我有一个方法WriteValueDWORD 值写入注册表:

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 值)?

【问题讨论】:

  • 有趣的是我的问题是什么,有人拒绝投票给我。

标签: c dword


【解决方案1】:
DWORD value = strtoul(searchHandleId, NULL, 16);

【讨论】:

    【解决方案2】:
    sscanf(searchHandleId, "%x", &value);
    

    可以帮到你。

    【讨论】:

    • @MaximShoustin: strtol 是一个非常出色的解决方案,因为它可以为您提供精确的错误处理(无法解析的文本、溢出等)。
    猜你喜欢
    • 2018-01-22
    • 2014-12-05
    • 1970-01-01
    • 2019-06-30
    • 2015-02-06
    • 2019-10-03
    • 2013-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多