Главная страница
    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.47 MB
Время: 0.013 c
15-1143774590
Nic
2006-03-31 07:09
2006.04.23
Deep Forest


4-1138956993
hgd
2006-02-03 11:56
2006.04.23
Подскажите о методе нажатия кнопку в другом приложении


15-1143882529
Marser
2006-04-01 13:08
2006.04.23
Весна...


15-1143611220
Ega23
2006-03-29 09:47
2006.04.23
С Днём рождения! 29 марта


3-1141283539
tolians
2006-03-02 10:12
2006.04.23
Проблема с дробными числами в Delphi <-> Access





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский