Форум: "Прочее";
Текущий архив: 2006.04.23;
Скачать: [xml.tar.bz2];
ВнизC++ Найти похожие ветки
← →
Tonich © (2006-03-31 18:21) [0]Драсте народ может кто поможет хоть это конечно не сишный форум , но это по-моему самый живой форум по программированию. Так вот даю запрос устройству через COM на получения некоторых данных
получаем ответ
Length 18: 01 45 06 00 00 0C 04 89 96 01 45 04 2C 01 00 00 AD C5
выделенным являются именно те данные что я и запрашивал, ну то есть это число типа float 4 байта. Так вот в программе ко мне это поступает как строка как записать это дело просто в переменную float F ? Сразу говорю в c++ чайник. ))
← →
Alkid © (2006-03-31 18:25) [1]А ты точно знаешь, в каком месте полученной строки байт располаагются
эти 4 байта, которые тебе нужны? Если да, то ответ достаточно прост, если нет,
то сообщай доп.данные.
А так это будет выглядеть типа так:
char * buffer; // Здесь лежит вся строка байт.
float f;
float f = *((float*)((int)buffer + 12)); // Данная строка кладёт в f 4 байта, расположенные по смещению 12 от начала строки.
← →
Alkid © (2006-03-31 18:27) [2]Кстати, на RSDN.ru форум по программированию живее всех живых.
← →
Игорь Шевченко © (2006-03-31 18:27) [3]
> *((float*)((int)buffer + 12));
песня :)
← →
Alkid © (2006-03-31 18:29) [4]
> песня :)
можно ещё так:memcpy(&f,buffer + 12,sizeof(float))
← →
Суслик © (2006-03-31 18:31) [5]
> [3] Игорь Шевченко © (31.03.06 18:27)
> > *((float*)((int)buffer + 12));
> песня :)
вроде и в дельфи с этим не проблема.
примерно также можно написать.
А в чем песня?
← →
Alkid © (2006-03-31 18:32) [6]
> вроде и в дельфи с этим не проблема.
> примерно также можно написать.
> А в чем песня?
Да можно и на Дельфи. Но товарищу надо было на плюсах.
← →
Суслик © (2006-03-31 18:33) [7]Не, вопрос был про "песня :)"
← →
Tonich © (2006-03-31 18:34) [8]
> Суслик © (31.03.06 18:31) [5]
в том то вся прелесть что именноне на дельфе а на с++ не по моей воли на с++ надо ))
← →
Игорь Шевченко © (2006-03-31 18:35) [9]Суслик © (31.03.06 18:31) [5]
> А в чем песня?
Звездочки, скобочки...
Alkid © (31.03.06 18:29) [4]
> можно ещё так:
А можно и так:
struct a {
unsigned char unknown[12];
float f;
};
((a*)buffer)->f
← →
Суслик © (2006-03-31 18:36) [10]
> Звездочки, скобочки...
а-а-а
понял.
← →
Kirr (2006-03-31 18:59) [11]Ничего вы не понимаете! Надо так:
template <unsigned int n>
class M
{
private:
unsigned char dummy[n];
float data;
public:
operator float() {return data;}
}
char * buffer; // Здесь лежит вся строка байт.
float f = (M<12>)buffer;
← →
Игорь Шевченко © (2006-03-31 22:32) [12]
> float f = (M<12>)buffer;
write-only language
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2006.04.23;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.011 c