Reg 文件 - “dword” 的作用是什么转换为?

发布于 2024-10-30 04:50:55 字数 214 浏览 1 评论 0原文

我有一个正在尝试读取的 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

时光匆匆的小流年 2024-11-06 04:50:55

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++) type uint32_t. An unsigned 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. An unsigned int will be large enough on MSVC++.

Conversion (if you have a hex string) can be done using strtoul.

心凉 2024-11-06 04:50:55

如果您检查 RegQueryValueEx 的 MSDN 库文章并点击 lpType 参数的链接,您将到达 此页面。快速摘要:

  • REG_BINARY:可变长度字节数组
  • REG_DWORD:32 位数字
  • REG_QWORD:64 位数字
  • REG_SZ:C 字符串
  • REG_EXPAND_SZ:带有 %environment% 变量的 C 字符串
  • 的 C 字符串数组

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:

  • REG_BINARY : variable length array of bytes
  • REG_DWORD : a 32-bit number
  • REG_QWORD : a 64-bit number
  • REG_SZ : C string
  • REG_EXPAND_SZ : C string with %environment% variable
  • REG_MULTI_SZ : array of C strings

with the bizarro ones omitted. There's only one good candidate: REG_DWORD. It is very common.

心的位置 2024-11-06 04:50:55

快速谷歌会告诉你,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.

秋千易 2024-11-06 04:50:55

使用 中的 uint32_t

可以使用 strtoul() 完成解析,然后转换 (不要假设 unsigned longuint32_t 是相同的)。

Use uint32_t from <stdint.h>.

Parsing can be done using strtoul() and then converting (don't assume that unsigned long and uint32_t are the same).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文