我有一个我正在尝试阅读的reg文件 某些值中有一个“ dword ”类型......
"check"=dword:000001f4
"blah"=dword:000000c8
"test"=dword:00000000
"hello"=dword:00000000
我应该将C ++类型转换为什么?怎么样?
答案 0 :(得分:7)
dword
是双字,其中一个字是旧的(Intel 8086)16位字。
因此,它转换为WinAPI特定类型DWORD
或标准C(但尚未标准C ++)类型uint32_t
。 C ++ 03保证unsigned long
足够大以容纳32位值,但在64位平台上可能会浪费。在MSVC ++上,unsigned int
足够大。
转换(如果您有十六进制字符串)可以使用strtoul
完成。
答案 1 :(得分:2)
如果您查看RegQueryValueEx的MSDN Library文章并关注lpType参数的链接,那么您将到达this page。快速摘要:
省略了奇怪的。只有一个好的候选人:REG_DWORD。这很常见。
答案 2 :(得分:1)
一个快速的谷歌会告诉你一个DWORD是两个字,一个WORD是Windows上的两个字节(从16位Windows回归,不要与硬件规格或其他操作系统中的“字”混淆,其中它可能是32位或更多)。因此,DWORD是32位,就像您显示的十六进制值的宽度所示。
无论如何,如果你包含Windows头文件,你可以简单地使用那里定义的DWORD
类型。
答案 3 :(得分:0)
使用uint32_t
中的<stdint.h>
。
可以使用strtoul()
进行解析然后转换(不要假设unsigned long
和uint32_t
相同)。