Byte to String

Ciao a tutti!
Di sicuro sarà una cavolata -.-'' ma vabbè.
Io leggo dei byte dalla porta seriale del mio Arduino, e avrei la necessita di convertire questi byte in stringhe. Ma non voglio il carattere corrispondente, se mi arriva per esempio 0x0B dalla seriale voglio convertirlo in "0B".
E' possibile?

grazie.

Ma ti serve di avere proprio il char[] del valore o ti basta solo di visualizzarlo?

Dovrei concatenarlo ad un' altra stringa da mandare via Ethernet :slight_smile: Quindi dovrei avere il char[]

Per mandarlo via ethernet puoi usare sprintf anche senza creare prima una variabile. (molto più efficiente in termini di memoria)

Sennò usa l'oggetto String( arduino 0019 o superiore)

String stringOne = String(45, HEX); // using an int and a base (hexadecimal)

fonte http://arduino.cc/en/Tutorial/StringConstructors

Proverò! Ti ringrazio :slight_smile:

Usando la classe string funziona tutto, ma vorrei risparmiare un po di memoria ed usare sprintf.

Mi restituisce questo errore:

Codice:
Serial.print(sprintf(buffer[j], "%x"));

Errore:
invalid conversion from 'byte' to 'char*'

Io devo convertire dei byte non dei caratteri... :sweat_smile:

gista l'idea, sbagliata la realizzazione...

spintf come primo argomento vuole IL PUNTATORE alla stringa (quindi non "il carattere"), come secondo argomento il % deve essere seguito dal TIPO di dato, ed infine la/le variabili le passi come argomento successivo. Quindi sarebbe:

sprintf(buffer, "%d", x);

ma così perdi il contenuto di buffer; per risolvere, prima di tutto buffer[0] nel setup lo poni = '\0' se no si incasina tutto (e anche quando vuoi azzerare la stringa, basta questa operazione) e poi:

sprintf(buffer, "%s%d", buffer, x);

ma puoi fare di meglio: evitare completamente l'uso di sprintf:

buffer[j]=x;

se vuoi invece convertire (non è il tuo caso, ma per completezza) dovresti fare:

buffer[j]=x+'0';//in caso di numeri, con le lettere il procedimento è simile ma non ha molto significato all'atto pratico