Страница 1 из 1

Из 16 в 10 на ATMEL

Добавлено: Вт янв 25, 2011 16:34:05
Slavast
Добрый день!
Подскажите как на Си можно перевести число из 16ричной системы в 10чную?
Есть какой-то готовый код или библиотека?
Спасибо.

Re: Из 16 в 10 на ATMEL

Добавлено: Вт янв 25, 2011 16:57:20
Danko

Код: Выделить всё

C = 255;
C = 0xFF;
C = 0b11111111;
Найдите отличия.


P.S.
восьмиричную забыл :(

Код: Выделить всё

C = 0377

Re: Из 16 в 10 на ATMEL

Добавлено: Вт янв 25, 2011 17:41:52
Slavast
Danko писал(а):

Код: Выделить всё

C = 255;
C = 0xFF;
C = 0b11111111;
Найдите отличия.
P.S.
восьмиричную забыл :(

Код: Выделить всё

C = 0377
Мне это необходимо для отображения значение АЦП на экране.
Ведь фраза "Напряжение на АЦП: 0x49" не очень хорошо читабельна.
Вот я и ударился в поисках срвета.

Re: Из 16 в 10 на ATMEL

Добавлено: Вт янв 25, 2011 17:43:17
Fasterpast
Это вам тогда надо число в строку =) itoa функция =)

Re: Из 16 в 10 на ATMEL

Добавлено: Вт янв 25, 2011 17:55:13
Danko
поищите описание sprintf

Re: Из 16 в 10 на ATMEL

Добавлено: Чт янв 27, 2011 21:07:26
12val12
Я кажется понял что нужно товарищу
примерчик ..так вывожу свои цифры

void print_int (unsigned int s)
{
c4=0;c3=0;c2=0;c1=0;
while (s>=10000){s-=10000;c4++;}
while (s>=1000){s-=1000;c3++;}
while (s>=100){s-=100;c2++;}
while (s>=10){s-=10;c1++;}
c0=s;
if (c4!=0) {print_char(c4+16);}
print_char(c3+16);
print_char(c2+16);
print_char(c1+16);
print_char(c0+16);
}

Re: Из 16 в 10 на ATMEL

Добавлено: Чт янв 27, 2011 22:33:03
leowka
как выше сказали sprintf

вот примерчик из инета:

Код: Выделить всё

/* sprintf example */
#include <stdio.h>

int main ()
{
  char buffer [50];
  int n, a=5, b=3;
  n=sprintf (buffer, "%d plus %d is %d", a, b, a+b);
  printf ("[%s] is a %d char long string\n",buffer,n);
  return 0;
}
Output:
[5 plus 3 is 8] is a 13 char long string

Re: Из 16 в 10 на ATMEL

Добавлено: Чт янв 27, 2011 22:58:44
BCluster
в sprintf %d - в десятичной форме будет число, если %X - в 16ричной.

Re: Из 16 в 10 на ATMEL

Добавлено: Пт янв 28, 2011 18:02:09
Кислый
itoa функция =)
функция крайне медленная и почти во всех реализациях крайне ущербна. при этом еще и относительно велика.

это моё личное мнение.

Код: Выделить всё

    uint8_t i = 255;
    char D[25] = {};
    sprintf (D, "%.d", i);
врт вам перенос числа i в десятичном виде строку\массив.

да. для таких вопросов у нас есть прикреплённая тема. Вопросы по С/С++ (СИ)