Перейти к содержанию
    

Конвертация float to uint8_t

Здравствуйте

 

подскажите начинающему, как конвертировать числовой тип данных в строчный, если типы данных в используемых мной библиотеках объявлены не стандартно.

 

Существует функция вывода текста на экран:

 

typedef unsigned          char uint8_t;
typedef unsigned short     int uint16_t;

void GUI_Text(uint16_t Xpos, uint16_t Ypos, uint8_t *str,uint16_t Color, uint16_t bkColor)
{
    uint8_t TempChar;
    do
    {
        TempChar = *str++;  
        PutChar( Xpos, Ypos, TempChar, Color, bkColor );    
        if( Xpos < MAX_X - 8 )
        {
            Xpos += 8;
        } 
        else if ( Ypos < MAX_Y - 16 )
        {
            Xpos = 0;
            Ypos += 16;
        }   
        else
        {
            Xpos = 0;
            Ypos = 0;
        }    
    }
    while ( *str != 0 );
}

 

И есть переменная, значение которой необходимо вывести на экран:

 

float temp;

temp = 345/16;

 

Пробовал так:

 

#include "stdlib.h"
#include "string.h"
float temp;
uint8_t tpre;
  
  temp = 345/16;
  sprintf(tpre,"",temp)
  strcat(tpre, " C");
  GUI_Text(10, 10, &tpre,White, Black)

 

Результат отрицательный. Помогите советом, как сделать правильно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пробовал так:

 

#include "stdlib.h"
#include "string.h"
float temp;
uint8_t tpre;
  
  temp = 345/16;
  sprintf(tpre,"",temp)
  strcat(tpre, " C");
  GUI_Text(10, 10, &tpre,White, Black)

 

Результат отрицательный. Помогите советом, как сделать правильно?

Во-первых sprintf формирует строку, а не целое. А во-вторых, где модификаторы формата? Должно быть что-то вроде

char s[16];
sprintf(s,"%5.2f",temp);
...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

аргумент функции отправки на дисплей, содержащий текст, должен быть типом uint8_t.

а функция:

 

sprintf(tpre,"%5.2f",temp);

 

работает только с типом char.

Вот и возникает вопрос как быть в таких случаях. И хоть uint8_t и есть переназванный char

 

typedef unsigned char uint8_t;

 

но все же является уже оригинальным типом данных.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

аргумент функции отправки на дисплей, содержащий текст, должен быть типом uint8_t.

а функция:

 

sprintf(tpre,"%5.2f",temp);

 

работает только с типом char.

Вот и возникает вопрос как быть в таких случаях. И хоть uint8_t и есть переназванный char

 

typedef unsigned char uint8_t;

 

но все же является уже оригинальным типом данных.

Функция отправки на дисплей принимает в качестве аргумента указатель на uint8_t. Так что

char s[16];
sprintf(s,"%5.2f",temp);
GUI_Text(10, 10, (uint8_t *)s,White, Black)

А вообще, рекомендую почитать Кернигана и Ритчи и разобраться в типах, массивах и указателях.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...