Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Преобразование последовательности байтов во float 
V
    Опции темы
Rickert
Дата 20.4.2009, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: 0
Всего: 52



Ау, извращенцы!
Код
const size_t size = sizeof(float);
char d[size] = {0};
float dest;

//some data storing in "d";

memcpy(&dest, d, size);

Какие Reinterpret'ы и доп. классы, не сходите с ума smile 


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
mrbrooks
Дата 20.4.2009, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 2
Всего: 306



Цитата(Rickert @  20.4.2009,  09:58 Найти цитируемый пост)
Ау, извращенцы!
....
Какие Reinterpret'ы и доп. классы, не сходите с ума


сам извращенец. 

если внимательно почитаешь посты - то memcpy уже предложили, до такого гениального парня, как ты. 
 smile 
PM MAIL   Вверх
Hukuma
Дата 20.4.2009, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 70
Регистрация: 18.2.2009

Репутация: нет
Всего: нет



Огромное всем спасибо за участие! smile очень много нового узнал и вопрос тоже решён smile спасибо большое! smile
PM MAIL   Вверх
Rickert
Дата 20.4.2009, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: 0
Всего: 52



mrbrooks, слеподыр! Не углядел! smile 


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
GoldFinch
Дата 20.4.2009, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 15
Всего: 26



Rickert, копировать 4 байта memcpy() - как минимум глупо

PM MAIL ICQ   Вверх
UniBomb
Дата 20.4.2009, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 1754
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: 2
Всего: 97



эх, тема была бы ещё интересней, если бы тут не занимались членомерством, а предлагали бы новые вариаты фразой "а ещё можно так", вместо "так делат глупо - надо вот так"....
PM MAIL ICQ Skype   Вверх
Lazin
Дата 20.4.2009, 12:07 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



Цитата(UniBomb @  20.4.2009,  11:47 Найти цитируемый пост)
эх, тема была бы ещё интересней, если бы тут не занимались членомерством, а предлагали бы новые вариаты фразой "а ещё можно так", вместо "так делат глупо - надо вот так"....

а можно вот так: 
Код

float dest;
char data[4];
std::copy(data, data + 4, &dest);
 smile 
PM MAIL Skype GTalk   Вверх
zim22
Дата 20.4.2009, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 24
Всего: 69



Цитата(Lazin @  20.4.2009,  12:07 Найти цитируемый пост)
а можно вот так: 

нельзя. я уже так пробовал smile


--------------------
PM MAIL   Вверх
mrbrooks
Дата 20.4.2009, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 2
Всего: 306



Цитата(zim22 @  20.4.2009,  12:50 Найти цитируемый пост)
нельзя. я уже так пробовал

может он не в студии делал?
PM MAIL   Вверх
zim22
Дата 20.4.2009, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 24
Всего: 69



Цитата(mrbrooks @  20.4.2009,  13:14 Найти цитируемый пост)
может он не в студии делал?

в Code::blocks тоже не работает. Вы сами подумайте, как оно может работать!?


--------------------
PM MAIL   Вверх
GoldFinch
Дата 20.4.2009, 13:28 (ссылка)   | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 15
Всего: 26



Цитата(zim22 @  20.4.2009,  14:25 Найти цитируемый пост)
как оно может работать!?

нормально может работать
data, data + 4, &dest - указатели, должны неявно преобразовываться в итераторы
PM MAIL ICQ   Вверх
Lazin
Дата 20.4.2009, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



не должно работать, так как у указателей разный тип, нужно &dest привести к char
PM MAIL Skype GTalk   Вверх
zim22
Дата 20.4.2009, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 24
Всего: 69



Цитата(GoldFinch @  20.4.2009,  13:28 Найти цитируемый пост)
нормально может работать

нет. оно не будет нормально работать. оно будет криво работать.

Цитата(Lazin @  20.4.2009,  13:33 Найти цитируемый пост)
нужно &dest привести к char

теперь работает.
Код

std::copy(data, data + 4, (char*)&dest);



--------------------
PM MAIL   Вверх
UnrealMan
Дата 20.4.2009, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 722
Регистрация: 30.3.2006

Репутация: 27
Всего: 32



Цитата(UniBomb @  20.4.2009,  11:47 Найти цитируемый пост)
эх, тема была бы ещё интересней, если бы тут не занимались членомерством, а предлагали бы новые вариаты фразой "а ещё можно так", вместо "так делат глупо - надо вот так".... 

Факт есть факт: самый простой и правильный способ - использование memcpy. Финт с объединением - это ненужное усложнение кода, а касты к float* не соблюдают выравнивание.
PM MAIL   Вверх
mrbrooks
Дата 20.4.2009, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 2
Всего: 306



Цитата(UnrealMan @  20.4.2009,  13:38 Найти цитируемый пост)
Финт с объединением - это ненужное усложнение кода

в чем усложнение то? в написание union. По мне так использование анонимного объединения ничем не хуже memcpy. 
PM MAIL   Вверх
Страницы: (4) Все 1 [2] 3 4 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0606 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.