Как сохранить двойной (64-разрядный с плавающей запятой) или с плавающей запятой в реестре Windows? - PullRequest
2 голосов
/ 01 ноября 2010

Я хочу сохранить double (64-битную плавающую точку) в реестре Windows.Как лучше всего это сделать?

Возможные варианты: и long, и double в 64-битном компиляторе - это 64-битные значения, поэтому один из вариантов - преобразовать двойное в 64-битное представление и хранить его как реестр "qword".Другой вариант - сохранить его в виде двоичного потока.

Ответы [ 4 ]

2 голосов
/ 01 ноября 2010

Или вы можете сохранить ее как строку в кодировке base64, или как угодно. :)

Лично я бы сохранил его как reg_binary, а не конвертировал туда-сюда, но что когда-либо легче всего, на самом деле зависит от языка. Что касается того, какой из них является «более правильным», я бы сказал, что reg_binary. Но реестр такой грязный взлом, что я не буду чувствовать себя плохо, если что-то сделаю «неправильно», если это будет проще.

1 голос
/ 02 августа 2013

Вы также можете использовать строку.

Например,

var software = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE", true);
var mycompany = software.CreateSubKey("MyCompany");
var emailagent = mycompany.CreateSubKey("EmailAgent");
emailagent.SetValue("SendMailPollingTime", "1000", RegistryValueKind.String);

emailagent = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Wow6432Node\\MyCompany\\EmailAgent");
double polling = double.Parse((string)emailagent.GetValue("SendMailPollingTime"));
0 голосов
/ 03 августа 2013

Вы можете найти все Windows registry types на этой странице. Вы должны взглянуть на:

  1. REG_SZ - если вы используете это, вы можете сохранить свой двойной номер в виде строки.
  2. REG_QWORD - вы можете хранить свой двойной как двойной.
  3. REG_BINARY - вы можете хранить ваш дубль как двоичные данные.

Второй, вероятно, выглядит лучше, но в таких случаях я использую третий вариант. Типы flout и double основаны на типе IEEE754, поэтому вы можете легко разбить свое число на 64 бита и не потерять точность (по сравнению с REG_SZ).

0 голосов
/ 24 апреля 2012

Один хитрый трюк, который я видел где-то, состоял в том, что они будут хранить числитель и знаменатель как отдельные DWORD, а затем объединять их при необходимости.

...