Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
MrCath
7 / 7 / 1
Регистрация: 08.11.2012
Сообщений: 68
#1

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

29.06.2013, 14:30. Просмотров 1589. Ответов 4
Метки нет (Все метки)

Помогите пожалуйста.
Необходимо в цикле переводить значение из переменной 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]?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.06.2013, 14:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перевод float в byte (C++):

Hex (3 byte) to Float - C++
С внешнего устройства приходят данные 40 00 00, 40 80 00, 7F FF FF и тп. Известно, что 7 бит первого байта это знак (если равен...

Перевод информации из byte в int - C++
Пишу программу по обработке звука с микрофона. Данные сохраняются в массиве char. Один отчёт равен 16 бит. Посоветуйте, как грамотно...

опять ошибка.на этот раз cannot convert `float (*)(float)' to `float' in argument passing - C++
#include<stdio.h> #include<stdlib.h> #include<math.h> float f1(float x)/*vira*enie 1*/ {return (x*cos(x))/(1+ pow(x,2));} ...

Перевод из string в float - C++
считывается выражение (числа и 5 возможных действий +, -, /, *, %) надо его посчитать планирую делать через польскую обратную запись ...

Чем отличаются float преобразования (float)var от float(var) - C++
Здравствуйте! Подскажите, чем отличается (float)var от float(var)

invalid types `float[float]' for array subscript - C++
void SEARCH(float vol, float price, int i) { if (i>N) { if(price>maxprice) { ...

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

неверное приведение void* к *float а далее к float - C++
Почему когда привожу void* к int* потом к int то все работает, данные не бьются и работают нормально, когда делаю те же операции но с...

cannot convert `float' to `float*. Почему так происходит? - C++
всем привет, помогите исправить ошибки... а то голова мало варит уже, а завтра надо сдать уже #include <stdio.h> #include <stdlib.h>...

Ошибка cannot convert 'float' to 'float*' - C++
Здравствуйте, что означает error: cannot convert 'float' to 'float*' for argument '1' to 'int mas_time(float*, int)'? Из-за чего она...

ОШИБКА [Error] cannot convert 'int*' to 'float*' for argument '1' to 'void Syma(float*,int*,int) - C++
Какая то проблема с указателями,незнаю,не хочет щитать суму парних чисел в второй подпрограме.Извиниет за ошибки.Не владею руским.Помогите...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.