Buongiorno, chiedo supporto per questa mia particolarità: con un keypad collegato ad un lcd, scrivo correttamente i numeri, ma da monitor seriale vengono scritti e gestiti in ASCII (scrivo 1 e interpreta 49, scrivo 2 e interpreta 50 ecc…) ! Devo eseguire dei calcoli per muovere un divisore meccanico, come posso fare per per far calcolare il numero non in ASCII? Grazie mille
Riceverai il codice ASCII dei caratteri. Poiché i numeri sono sequenziali nella tabella ASCII, a partire da zero, se sottrai il codice per '0' ottieni il valore decimale
char r = ...; // il carattere ASCII che ricevi
int v = - 1; // -1 per dire errore
if (r >= '0' && r <= '9') v = r - '0';
if (v != -1) {
// v è il valore decimale.
} else {
// errore
}
potresti anche usare isdigit() per verificare se il carattere che ricevi è una cifra
Come ti ha scritto J-M-L, fortunatamente, in ASCII i numero sono codificati da 0x30 (per il numero 0) a 0x39 (per il numero 9) quindi se ad un char che contiene un numero ASCII sottrai il valore esadecimale 0x30 (che poi è il carattere 0) ti resterà un valore che è esattamente il numero in decimale
Guglielmo
Perfetto vi ringrazio entrambi!
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.