@PavelTM

Как преобразовать числа из HEX в числа Double?

Есть .dat файл, который создала программа, она в нем хранит данные и когда запускается, то считывает эти данные из файла.
Задумка такая. Подменить данные в файле .dat и программа при запуске прочитает те данные которые мне нужны. В программу другими путями не получается нужные мне данные отправить.

Файл dat является бинарным. Открыл его редактором HEX

В файле в принципе разобрался. В файле записаны числа, каждое число занимает 8 байт, а так же записаны даты, так же занимает 8 байт.

Хочу на C# написать программу которая возьмет мои данные, преобразует их в HEX и запишет в файл.

Теперь собственно проблема и вопрос. Как преобразовать числа в HEX

Вот одно число из файла

00 00 00 00 80 87 D1 40 = программа понимает его как 17950

В HEX редакторе я изменял это число, и вот как программе читает файл

00 00 00 00 00 00 00 40 = это она читает как 2
00 00 00 00 00 00 00 39 = это она читает как 0 и ниже 0 значение в программе быть не может, так что 39 и ниже все равно программа воспринимает как 0
00 00 00 00 81 87 D1 40 = так программа читает 17950,015625
00 00 00 01 80 87 D1 40 = 17950.000061
00 00 01 00 80 87 D1 40 = видит как 17950 Возможно программа уже точность не отображает

FF FF FF FF FF FF FF 40 = 131072
FF FF FF FF FF FF FF 41 = 8589934591,999999

У меня есть данные в виде чисел их нужно преобразовать в HEX

17000 => HEX
17128 => HEX
17564 => HEX
16458 => HEX

Никогда не приходилось заниматься таким преобразованием, даже не знаю в каком направлении двигаться, куда капнуть?

Кто знаком, подскажите..

Еще задача дату время преобразовывать в этом файле, тоже представления не имею как, но пока хочу с числами разобраться хотя бы.
  • Вопрос задан
  • 342 просмотра
Решения вопроса 1
lam0x86
@lam0x86
Это обычные сериализованные значения double.

Читать его можно так:
using (var reader = new BinaryReader(File.Open("<file path>", FileMode.Open)))
{
  var value1 = reader.ReadDouble();
  var value2 = reader.ReadDouble();
 ...
}


А записывать - так:
using (var bw = new BinaryWriter(File.Create("<file path>")))
{
  double value1 = 2;
  double value2 = 17950.015625;
  bw.Write(value1);
  bw.Write(value2);
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы