Форум программистов, компьютерный форум CyberForum.ru

Перевод float в byte - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
MrCath
7 / 7 / 1
Регистрация: 08.11.2012
Сообщений: 68
29.06.2013, 14:30     Перевод float в byte #1
Помогите пожалуйста.
Необходимо в цикле переводить значение из переменной float в массив 4 байтов (byte[4]).
Код примерно такой:
C++
1
2
3
4
5
6
7
8
9
10
byte address[4];
float Y = 4.5, X = 5.5;
while (1)
    {
    memcpy(address, &Y, sizeof(Y) );
    WriteProcessMemory(hprog, (LPVOID) 0xB34В45, address, 4, 0);
    memcpy(address, &X, sizeof(X) );
    WriteProcessMemory(hprog, (LPVOID) 0xB34В35, address, 4, 0);
           Sleep(3);
    }
Собственно, memcpy отлично переводит, НО очень странно.
Т.к. мне нужно очень большая скорость, то я ставлю слип на 3, но тогда переменные пишутся не правильно. Нужно записывать скажем 20, а он пишет 20, 50, 1000, 2341234345.... Тоесть, значения "улетают"...

Если поставить слип на 15, то переменные в память записываются идеально... но это очень долго...

В чем может быть проблема?
Может есть другой, более надежный способ перевести float в byte[4]?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
29.06.2013, 14:39     Перевод float в byte #2
C++
1
2
3
4
5
union float_bytes_t
{
    float value;
    byte bytes[sizeof(float)];
};
MrCath
7 / 7 / 1
Регистрация: 08.11.2012
Сообщений: 68
29.06.2013, 14:54  [ТС]     Перевод float в byte #3
@Jupiter, можете пожалуйста дать пример, как перевести float X = 5.5 в массив байтов? Просто я понял, что тут происходит объявление float переменной и массива байтов, который равен размеру float... Но не понял, как перевести...
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
29.06.2013, 14:59     Перевод float в byte #4
@MrCath, гугли что такое union
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
29.06.2013, 15:06     Перевод float в byte #5
@MrCath, union - объединение. Размер этой структуры равен размеру поля, занимающего максимальный объем памяти. Т.е sizeof(float_bytes_t)==sizeof(float). Все поля хранятся в одном и том же участке памяти, т.е, записав в поле value что-нибудь, массив bytes уже будет "заполнен" нужными тебе данными
Yandex
Объявления
29.06.2013, 15:06     Перевод float в byte
Ответ Создать тему
Опции темы

Текущее время: 18:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru