簡體   English   中英

reg文件-“ dword”轉換為什么?

[英]Reg file - what does “dword” convert to?

我有一個要閱讀的reg文件。
在某些值中有一個“ dword ”類型...

"check"=dword:000001f4
"blah"=dword:000000c8
"test"=dword:00000000
"hello"=dword:00000000

我應該將其轉換為哪種C ++類型? 如何 ?

dword是雙字,其中一個字是舊的(Intel 8086)16位字。

因此,它將轉換為WinAPI特定的類型DWORD或標准C(但不是標准C ++)類型uint32_t C ++ 03保證unsigned long必須足夠大以容納32位值,但在64位平台上可能很浪費。 在MSVC ++上, unsigned int足夠大。

轉換(如果您有十六進制字符串)可以使用strtoul

如果查看MSDN Library中的RegQueryValueEx文章,並點擊lpType參數的鏈接,您將到達此頁面 快速總結:

  • REG_BINARY:可變長度的字節數組
  • REG_DWORD:32位數字
  • REG_QWORD:64位數字
  • REG_SZ:C字串
  • REG_EXPAND_SZ:具有%environment%變量的C字符串
  • REG_MULTI_SZ:C字符串數組

省略了古怪的東西。 只有一個不錯的人選:REG_DWORD。 這是很常見的。

一個快速的Google會告訴您DWORD是兩個字,而WORD是Windows上的兩個字節(從16位Windows倒退,不要與硬件規格或其他操作系統中的“字”相混淆) 32位或更多)。 因此,DWORD為32位,正如您顯示的十六進制值的寬度所建議的那樣。

無論如何,如果您包含Windows頭文件,則可以簡單地使用在那里定義的DWORD類型。

使用<stdint.h> uint32_t

可以使用strtoul()進行解析,然后進行轉換(不要假定unsigned longuint32_t相同)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM