Форум программистов, компьютерный форум CyberForum.ru

Как правильно преобразовать типы данных? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как выводить графику во фрагменте диалогового окна? http://www.cyberforum.ru/cpp-beginners/thread472693.html
Сложно сформулировать чего я хочу. Короче есть диалоговое окно. В нём есть закладки (TabCtrl) на одной из которых задумано маленькое окошко. В окошке должна рисоваться.. ну неважно. Вопрос в том, из чего сделать это маленькое окошко, и можно ли это делать в редакторе ресурсов или надо полностью программировать. Есть у меня подозрение на CViewCtrl но не уверен. Помогите кто может. Заранее...
C++ dll ресурсов Как правильно создать dll только с ресурсами - иконки, картинки и пр. (VC++6, без привлечения MFC) http://www.cyberforum.ru/cpp-beginners/thread472691.html
C++ Как вывести многоканальный звук ?
Нет ли у кго информации по программированию вывода звука на многоканальные звуковые карты. Единственным хорошо описанным способом является Direct sound, но он заточен под позиционирование в пространстве отдельных источников звука, а мне надо синхронно воспроизвести 4 канала. При попытке представить их в виде источников, размещенных по углам комнаты, звуковая картина рассыпается из за того, что...
C++ Программа выполнила недопустимую операцию и будет закрыта
Это я всё о том контроле... Значит принимаю я массив вариантов следующим образом: void CTableCtrl::getData(const VARIANT FAR& myData) { long lNumRows = 0; long lNumCols = 0; long sRIndex = 0; long sCIndex = 0; COleSafeArray* myDataArray; myDataArray = NULL;
C++ Пример рaбoты с BMP-фaйлaми в XLib http://www.cyberforum.ru/cpp-beginners/thread472658.html
Сaбж. Меня плoхo кoрмят и зaстaвляют прoгрaммить пoд X Windows. Вoпрoс: кaк рaбoтaет true-color и indexed color т.е. palette в XLib. Бoлее кoнкретнo: рaбoтa с BMP-фaйлaми в XLib. Если мoжнo пример.
C++ Перегрузка конструктора Подскажите плиз как сделать перегрузку конструктора в этой проге: #include <iostream.h> // #include <conio.h> class room { int RA;//Room area int NW; //Number of windows public: room(int i, int j){RA=i; NW=j;} int output(); int light(){return RA/NW<=10?1:0;} подробнее

Показать сообщение отдельно
Darland
0 / 0 / 0
Регистрация: 10.11.2008
Сообщений: 13

Как правильно преобразовать типы данных? - C++

27.12.2008, 18:16. Просмотров 751. Ответов 2
Метки (Все метки)

Возможно я не очень хорошо понимаю С, но случилась такая проблема. Есть прога:
Код
unsigned char data[20];
unsigned long var1;
float var2;

data[0] = 0x10;
data[1] = 0xA1;
data[2] = 0x00;
data[3] = 0x00;
Может я совсем дурак, но дальше я пишу так:
Код
var1 = data[3] * 0x1000000 + data[2] * 0x10000 + data[1] * 0x100 + data[0];
Дело в том, что в массиве побайтно 'размана' переменная и я хочу ее 'собрать'. Но в зависимости от значений data[0] ... data[3] нехороший С делает что-то не так и var1=0xFFFF1021 (что-то типа этого) или еще хуже при data[3] = 0 и data[2] = 0x08 результат var1=0x0007A110 то есть пропадает единица! Что делать?!
А самый худший вариант, когда у меня в 3-х байтах массива:
Код
data[4] = 0x0C;
data[5] = 0x23;
data[6] = 0x56;
Записана знаковая переменная типа float которая преобразована в целочисленный формат путем умножения на 2^31. Мне нужно засунуть ее назад в float, я пишу:
Код
var2=(data[4] * 0x10000 + data[5] * 0x100 + data[6]) / pow(2,31);
И при этом я получаю вообще непредсказуемые результаты. Знак переменной определяется первым битом data[4] (в данном случае знак положительный).
Как правильно записать такого рода преобразования?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru