2011-09-30 164 views
1

我想做一些註冊表編輯,我不知道我明白如何計算特定的DWORD值。註冊表編輯:如何計算DWord十六進制值

這裏有兩個例子:

[HKEY_CURRENT_USER\ControlPanel\Volume] 
"Volume"=dword:0xFFFFFFFF ; 0=off, 0xFFFFFFFF=maximum 

"Refresh"=dword:493E0 ; every 5 minutes 

對於體積,我怎麼會計算什麼的選擇範圍是,如果爲0xFFFFFFFF是最大?而對於「刷新」,如果493E0每5分鐘一次,我怎麼知道每分鐘,每天或每小時會是什麼?

這是一個Motorola Symbol MK4000 WinCE 5.0設備。

回答

0

如果您將Windows計算器置於科學模式,您可以輕鬆地在HEX和常規DECIMAL之間進行轉換。

http://scripts.sil.org/cms/scripts/page.php?item_id=HextoDecConversion

編輯: 數0x493E0是300000,我想象是毫秒數,除以1000獲得的秒(300)的數量,除以60得到的數分鐘(5)。

+0

因此493E0在5分鐘內轉換爲300,000 ==毫秒數。甜。另一方面,0xFFFFFFFF = 4294967295(不知道這是如何轉化爲音量) - 想法?我猜這一半是50%的數量。 – doremi

+0

數字0xFFFFFFFF是您可以存儲在一個無符號的32位數字的最高數字,我想像他們爲什麼這樣設置它。該限制本身是爲了防止int32類型的緩衝區溢出,並且可能不是實際的邏輯限制(因爲它可能要低得多)。 – Matthew

2

成交量爲2. The low word is left and the high word is right。頻道上的0xffff對應於100%或「最大」。 50%是0x7fff等等。請記住,這也很少是線性的,因此50%的音量並不意味着高達50%。

EDIT

爲了澄清遠一點,體積被分成兩個通道。我假設你想要每個音量都相同。

通式爲[left value] | ([right value << 16])

下面舉例說明:

爲100%,爲0xFFFF在兩個通道的值就是你想要的。
Value = 0xFFFFFFFF == 0xFFFF | (0xFFFF << 16)

對於50%,兩個通道(0xffff/2)上的值爲0x7FFF是您想要的。
Value = 0x7FFF7FFF == 0x7FFF | (0x7FFF << 16)

對於25%,兩個通道(0x7fff/2)上的值爲0x3FFF是你想要的。
Value = 0x3FFF3FFF == 0x3FFF | (0x3FFF << 16)

+0

嗯。這有點令人困惑,特別是在閱讀MSDN文章之後。 – doremi