Главная страница
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.04 c
2-1144589175
bagos
2006-04-09 17:26
2006.04.23
TExcel


2-1144145688
Ламот
2006-04-04 14:14
2006.04.23
Запуск стороннего приложения


15-1144248921
ArtemESC
2006-04-05 18:55
2006.04.23
MIDI => WAV или MIDI => MP3


3-1141450048
-САша-
2006-03-04 08:27
2006.04.23
Delphi with fbclient.dll


2-1144267669
Std
2006-04-06 00:07
2006.04.23
определение недели по дате