Цитата(TechMike @ Oct 17 2008, 21:38)

Не получается преобразовать char в string но в шестнадцатеричной системе.
Цель: выплюнуть в usart серийник ds1990 в шестнадцатеричном виде, делаю для примера так:
Ну если цель _только_ выплюнуть серийник в 16-ричном виде, то даже я сделал бы в что-то в духе:
Код
void put_nibble_hex(uint8_t n)
{
n &= 0x0F;
n += '0';
if( n > '9' ) n += 'A' - '0' - 10;
uart_put_char(n);
}
void put_byte_hex(uint8_t b)
{
put_nibble_hex( b >> 8);
put_nibble_hex( b );
}
А если хочется сервис printf, то тогда лучше не буфер выделять каждый раз и snprintf() использовать, а, как я уже писал, делать так:
Код
#include <stdio.h>
FILE uart_file = FDEV_SETUP_STREAM(uart_putc, 0, _FDEV_SETUP_WRITE);
fprintf_P( uart_file, PSTR("%02X\n"), b); // форматная строка во флеше
fprintf( uart_file, "%02X\n", b); // если вдруг хочется - форматная строка в ОЗУ
А если вторым параметром FDEV_SETUP_STREAM дать uart_getc, то и fscanf прикрутится.