Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
3-1141201875
Andreus
2006-03-01 11:31
2006.04.23
Проблема: не работает поиск по полю, при наличии индекса


15-1143907200
ArtemESC
2006-04-01 20:00
2006.04.23
Типа шутки штоли...


2-1144733806
Сергей И.
2006-04-11 09:36
2006.04.23
Работа с принтером


2-1144403565
fast2
2006-04-07 13:52
2006.04.23
Как "выкинуть" из списка Tab Order... определенный компонент?


4-1138965260
V-A-V
2006-02-03 14:14
2006.04.23
Права админа





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский