Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.04.23;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.046 c
8-1128977517
Alko
2005-10-11 00:51
2006.04.23
Обратный отсчте времени


2-1144397600
Creative
2006-04-07 12:13
2006.04.23
как сохранить TList


15-1143797930
Kolan
2006-03-31 13:38
2006.04.23
Пример из книги не соответствует действительности.


15-1143789126
Курдль
2006-03-31 11:12
2006.04.23
Можно ли писать на Kylix под Solaris?


3-1141208401
nap<>
2006-03-01 13:20
2006.04.23
DBLoockupComboBoxEh