@vari0us

Как точно записать float в бинарный файл?

Приветствую.Столкнулся с неприятным багом записываю флоат по адресу в чужом exeшнике/dll.Смотрю результат хекс редактором, отличается значение цифр после запятой и их количество.
Например я задаю патчить число =2.01276 а оно патчится на 2,0127599239e+0

Делаю так
void Patch(string file_path, string tp, string val, long addr) {
 BinaryWriter bw = new BinaryWriter(File.Open(file_path, FileMode.Open, FileAccess.ReadWrite));

 bw.BaseStream.Seek(addr, SeekOrigin.Begin);
               
 bw.Write(Convert.ToSingle(val.Replace('.', ',')));
bw.Close();
}


Мне нужно чтобы патченный в файле флоат был точно таким же каким я его передаю программе, помогите.
  • Вопрос задан
  • 394 просмотра
Пригласить эксперта
Ответы на вопрос 2
impwx
@impwx
Разработчик
У BinaryWriter есть метод Write(float arg), и не нужно ничего конвертировать в строку.
Ответ написан
yamaoto
@yamaoto
la programmeur
А пробовали BitConverter?

BitConverter.GetBytes - метод (Single)


Заметки

Порядок байтов в массиве, возвращаемом методом GetBytes зависит от того, компьютерная архитектура элементов -, так и обратный порядок байтов.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы