Редактирование реестра: Как рассчитать шестнадцатеричные значения DWord - PullRequest
1 голос
/ 30 сентября 2011

Я пытаюсь внести некоторые изменения в реестр, и я не уверен, что понимаю, как рассчитываются конкретные значения dword.

Вот два примера:

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

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

Как рассчитать объем для объема, если 0xFFFFFFFF - максимум?А для «Обновить», если 493E0 - каждые 5 минут, как мне определить, какой будет каждая минута, или каждый день, или каждый час?

Ответы [ 2 ]

2 голосов
/ 30 сентября 2011

Объем разделен на 2. Младшее слово слева, а старшее слово справа .0xffff на канале соответствует 100% или «макс».50% - это 0x7fff и так далее.Помните, что он также редко бывает линейным, поэтому громкость 50% не означает громкость 50%.

РЕДАКТИРОВАТЬ

Чтобы пояснить немного, громкость делится надва канала.Я предполагаю, что вы хотите, чтобы на каждом из них был одинаковый объем.

Общая формула: [left value] | ([right value << 16])

Вот примеры:

Для 100% значение 0xFFFFна обоих каналах - то, что вы хотите.
Value = 0xFFFFFFFF == 0xFFFF | (0xFFFF << 16)

Для 50% значение 0x7FFF на обоих каналах (0xffff / 2) - это то, что вы хотите.
Value = 0x7FFF7FFF == 0x7FFF | (0x7FFF << 16)

Для 25% значение 0x3FFF на обоих каналах (0x7fff / 2) - это то, что вам нужно.
Value = 0x3FFF3FFF == 0x3FFF | (0x3FFF << 16)

0 голосов
/ 30 сентября 2011

Если вы переведете Windows Calculator в научный режим, вы сможете легко конвертировать HEX в обычный DECIMAL.

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

РЕДАКТИРОВАТЬ: число 0x493E0 равно 300000, что, я думаю,число МИЛЛИСЕКОНДОВ, разделите это на 1000, чтобы получить количество секунд (300), разделите это на 60, чтобы получить количество минут (5).

...