Reg 文件 - “dword” 的作用是什么转换为?
我有一个正在尝试读取的 reg 文件。
某些值中有一个类型“dword”...
"check"=dword:000001f4
"blah"=dword:000000c8
"test"=dword:00000000
"hello"=dword:00000000
我应该将其转换为什么 C++ 类型?又如何?
I have a reg file which I'm trying to read.
There's a type "dword" in some of the values...
"check"=dword:000001f4
"blah"=dword:000000c8
"test"=dword:00000000
"hello"=dword:00000000
What C++ type should I convert it to ? and how ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
dword
是一个双字,其中一个字是旧的 (Intel 8086) 16 位字。因此,它会转换为 WinAPI 特定类型
DWORD
或标准 C(但尚未标准 C++)类型uint32_t
。 C++03 保证unsigned long
足够大以容纳 32 位值,但在 64 位平台上可能会造成浪费。unsigned int
在 MSVC++ 上足够大。转换(如果您有十六进制字符串)可以使用
strtoul
完成。A
dword
is a double word, where a word is the old (Intel 8086) 16-bit word.So, it converts to the WinAPI-specific type
DWORD
, or the standard C (but not yet standard C++) typeuint32_t
. Anunsigned long
is guaranteed by C++03 to be large enough to hold 32-bits values as well, but may be wasteful on 64-bit platforms. Anunsigned int
will be large enough on MSVC++.Conversion (if you have a hex string) can be done using
strtoul
.如果您检查 RegQueryValueEx 的 MSDN 库文章并点击 lpType 参数的链接,您将到达 此页面。快速摘要:
REG_MULTI_SZ:省略奇怪字符串 。只有一个好的候选者:REG_DWORD。这很常见。
If you check the MSDN Library article for RegQueryValueEx and following the link for the lpType argument, you'll arrive at this page. A quick summary:
with the bizarro ones omitted. There's only one good candidate: REG_DWORD. It is very common.
快速谷歌会告诉你,DWORD 是两个字,而 WORD 在 Windows 上是两个字节(这是 16 位 Windows 的倒退,不要与硬件规范或其他操作系统中的“字”混淆,在这些地方它可能是32 位或更多)。因此,DWORD 是 32 位,正如您显示的十六进制值的宽度所暗示的那样。
不管怎样,如果你包含 Windows 头文件,你可以简单地使用那里定义的 DWORD 类型。
A quick Google will tell you that a DWORD is two words, and a WORD is two bytes on Windows (a throwback from 16-bit Windows, not to be confused with a "word" in hardware specifications or other OS's, where it may be 32 bits or more). So a DWORD is 32 bits, just as the width of the hex values you show suggests.
Anyway, if you include Windows header files, you can simply use the
DWORD
type defined there.使用
中的uint32_t
。可以使用
strtoul()
完成解析,然后转换 (不要假设unsigned long
和uint32_t
是相同的)。Use
uint32_t
from<stdint.h>
.Parsing can be done using
strtoul()
and then converting (don't assume thatunsigned long
anduint32_t
are the same).