[英]Invalid DWORD value in Registry after writing a DWORD as 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_DWORD。 這是很常見的。
一個快速的Google會告訴您DWORD是兩個字,而WORD是Windows上的兩個字節(從16位Windows倒退,不要與硬件規格或其他操作系統中的“字”相混淆) 32位或更多)。 因此,DWORD為32位,正如您顯示的十六進制值的寬度所建議的那樣。
無論如何,如果您包含Windows頭文件,則可以簡單地使用在那里定義的DWORD
類型。
使用<stdint.h>
uint32_t
。
可以使用strtoul()
進行解析,然后進行轉換(不要假定unsigned long
和uint32_t
相同)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.