Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как преобразовать double в char?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > PIC
Marser
Здравствуйте, коллеги!
Программирую микроконтроллер pic18f4520 на С с использованием компилятора ht picc-18.
Подскажите пожалуйста, какой командой можно преобразовать переменную типа double в массив типа char?
Спасибо.
arttab
принцип такой:
txd_buf[0]=(char) (ADCval>>8);
txd_buf[1]=(char) (ADCval&0x00FF);

это shot в char, но принцип, думаю, понятен
Demeny
Цитата(Marser @ Nov 25 2010, 17:03) *
Здравствуйте, коллеги!
Программирую микроконтроллер pic18f4520 на С с использованием компилятора ht picc-18.
Подскажите пожалуйста, какой командой можно преобразовать переменную типа double в массив типа char?
Спасибо.

Вопрос неоднозначный - непонятна цель сего преобразования. Если нужно просто получить 8 байт (хотя и непонятно зачем), входящих в состав переменной типа double, тогда так:
Код
double d;
char* d_bytes;
.....................
d_bytes = (char*) &d;
printf("First 3 bytes in double : %X %X %X \r\n", d_bytes[0], d_bytes[1], d_bytes[2]);

Но скорее всего ТС имел в виду получить текстовое представление числа double. Тогда так:
Код
double d;
char d_bytes[32];
..........................
sprintf(d_bytes, "%f", d);
Marser
Благодарю. Появилась другая проблема:
Переменные типа double неадекватно себя ведут.
Вот код:

double d;
char s;

d=5;
s=d;

indicate(s);
По команде indicate(s); на экранчике отображается нуль, а не 5. Так же с пременными типа double не работает операция % (остаток от деления). Кто нибудь знает, почему контроллер неправильно работает с переменной типа double?
Спасибо.
_Pasha
Цитата(Marser @ Nov 26 2010, 11:47) *
Благодарю. Появилась другая проблема:

И я даже знаю какая - непрочтенный Керниган и Ритчи второй редакции. maniac.gif
Marser
Цитата(_Pasha @ Nov 26 2010, 12:01) *
И я даже знаю какая - непрочтенный Керниган и Ритчи второй редакции. maniac.gif

Уже читаю.
Danis
Цитата(_Pasha @ Nov 26 2010, 12:01) *
И я даже знаю какая - непрочтенный Керниган и Ритчи второй редакции. maniac.gif


Зачем так пинать?

Marser, % - остаток целочисленного деления, и применяется с целочисленным переменным, типа char, short, int, long. Но никак не к double и float.
inki-sasha
Цитата(Marser @ Nov 26 2010, 12:47) *
Благодарю. Появилась другая проблема:
Переменные типа double неадекватно себя ведут.
Вот код:

double d;
char s;

d=5;
s=d;

indicate(s);
По команде indicate(s); на экранчике отображается нуль, а не 5. Так же с пременными типа double не работает операция % (остаток от деления). Кто нибудь знает, почему контроллер неправильно работает с переменной типа double?
Спасибо.


Попробуй написать так:
d=5.0;
s=(char)d;
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.