Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
30.01.2010, 13:40
|
|
Гражданин KAZUS.RU
Регистрация: 18.07.2006
Сообщений: 870
Сказал спасибо: 231
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
|
преобразовать HEX в DEC
друзья!
надо преобразовать HEX в CVAVR в DEC.
искал надлежащую функцию в cvavr ,но в книге нашел только bin
в bcd . Если цифры не превышают "9" то проблем нет ,а после ".9" уже все
путается.
смотрел разные проекты в надежде, что чтото выисню, но безуспешно.
искал в googl- е ,опять таки ничего. Может это так тривиално, что на него даже не обращают внимание ,но для меня стала проблемой.
Подскажите пожалуйста, существует ли специальная функция в CVAVR
перевода HEX в DEC , или же будьте любезны указать как это можно осуществить?
Заранее благодарен .
|
|
|
|
30.01.2010, 14:46
|
|
Временная регистрация
Регистрация: 09.07.2005
Сообщений: 91
Сказал спасибо: 1
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Re: преобразовать HEX в DEC
1.Переводите HEX в bin.
2.Используете найденную Вами bin в bcd.
3.Переводите bcd в DEC.
Операции 1 и 3 довольно простые.
Это просто переименование.
|
|
|
|
30.01.2010, 14:51
|
|
Прописка
Регистрация: 14.08.2006
Сообщений: 106
Сказал спасибо: 19
Сказали Спасибо 7 раз(а) в 7 сообщении(ях)
|
Re: преобразовать HEX в DEC
Вы можете использовать функции форматированного вывода - printf()
Или я что то не понял.
|
|
|
|
30.01.2010, 15:17
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.02.2008
Сообщений: 1,802
Сказал спасибо: 124
Сказали Спасибо 602 раз(а) в 419 сообщении(ях)
|
Re: преобразовать HEX в DEC
Видимо Вы хотите получить строку из HEXa.
Тогда
#include ‹stdio.h›
......
int H;
char D[5];
H=0xC2; // H=0xC2 это к примеру
sprintf(D,"%d",H);
например так.
|
|
|
|
30.01.2010, 19:01
|
|
Гражданин KAZUS.RU
Регистрация: 18.07.2006
Сообщений: 870
Сказал спасибо: 231
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
|
Re: преобразовать HEX в DEC
друзья!
Спасибо за оеративные ответы.
Я попробовал код предложенный andries5 и был удивлен как просто
оказывается все делается когда знаешь .
Эти несколько чудесных строк выводят на LCD в формате BCD число из HEX ;
char buff[17];
int a=0xAABB;
sprintf (buff,"a=%u",a);
lcd_clear();
lcd_puts(buff);
выводится a=43707 ,что является BCD эквивалентом 0xAABB.
Еще раз всем огромное спасибо!!!!!!!!!!!
|
|
|
|
30.01.2010, 19:26
|
|
Гражданин KAZUS.RU
Регистрация: 18.07.2006
Сообщений: 870
Сказал спасибо: 231
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
|
Re: преобразовать HEX в DEC
друзья!
Ну вот, вроде все было хорошо, но черт не спит и очередная загвоздка.
как только увеличил разрядность и перешол на LONG ,верхные два баита "AABB" срезает и выдает только BCD на нижние два баита.
char buff[17];
long a=0xAABBCCDD;
sprintf (buff,"a=%u",a);
lcd_clear();
lcd_puts(buff);
выдает a=52445 , а не 2864434397 ,как и вроде должно было.
что тут можно делать?
cпасибо заранее.
|
|
|
|
30.01.2010, 19:27
|
|
Супер-модератор
Регистрация: 15.10.2007
Сообщений: 3,530
Сказал спасибо: 172
Сказали Спасибо 1,560 раз(а) в 810 сообщении(ях)
|
Re: преобразовать HEX в DEC
Сообщение от begun
|
друзья!
Спасибо за оеративные ответы.
Я попробовал код предложенный andries5 и был удивлен как просто
оказывается все делается когда знаешь .
Эти несколько чудесных строк выводят на LCD в формате BCD число из HEX ;
char buff[17];
int a=0xAABB;
sprintf (buff,"a=%u",a);
lcd_clear();
lcd_puts(buff);
выводится a=43707 ,что является BCD эквивалентом 0xAABB.
Еще раз всем огромное спасибо!!!!!!!!!!!
|
sprintf преобразует 43707 в ASCII-символы: 0x34 0x33 0x37 0x30 0x37. BCD это 0x4, 0x3, 0x7,0x0, 0x7 или 0x04 0x37 0x07 (каждый ниббл это цифра в десятичном виде).
|
|
|
|
30.01.2010, 20:22
|
|
Гражданин KAZUS.RU
Регистрация: 18.07.2006
Сообщений: 870
Сказал спасибо: 231
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
|
Re: преобразовать HEX в DEC
да ,но сейчас проблема стала преобразовать LONG HEX В BCD.
char buff[17];
long a=0xAABBCCDD;
sprintf (buff,"a=%u",a);
lcd_clear();
lcd_puts(buff);
выдает a=52445 , а не 2864434397 ,как и вроде должно было.
что тут можно делать?
cпасибо заранее.
|
|
|
|
30.01.2010, 20:31
|
|
Супер-модератор
Регистрация: 15.10.2007
Сообщений: 3,530
Сказал спасибо: 172
Сказали Спасибо 1,560 раз(а) в 810 сообщении(ях)
|
Re: преобразовать HEX в DEC
Сообщение от begun
|
да ,но сейчас проблема стала преобразовать LONG HEX В BCD.
char buff[17];
long a=0xAABBCCDD;
sprintf (buff,"a=%u",a);
lcd_clear();
lcd_puts(buff);
выдает a=52445 , а не 2864434397 ,как и вроде должно было.
что тут можно делать?
cпасибо заранее.
|
Код:
|
sprintf (buff,"a=%lu",a); |
|
|
|
|
30.01.2010, 22:27
|
|
Гражданин KAZUS.RU
Регистрация: 18.07.2006
Сообщений: 870
Сказал спасибо: 231
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
|
Re: преобразовать HEX в DEC
realid!
конечно ,большое спасибо за желание помочь ,но сколько не крутил,
все равно пишет тоже самое;
a=52445;
Не знаю, что делать, может чего то не так делаю, но вроде набрал правильно.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 14:48.
|
|