Ciao,
mi servirebbe un'informazione.
Esiste in C una funzione che converte da eesadecimale a char?
![]()
![]()
![]()
grazie ciao
Ciao,
mi servirebbe un'informazione.
Esiste in C una funzione che converte da eesadecimale a char?
![]()
![]()
![]()
grazie ciao
In che senso?
Un carattere lo puoi esprimere con che base vuoi... decimale, esadecimale, ottale, binario...
Ciao.codice:printf("%c, %c, %c", 65, 0x41, 0101);![]()
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
Ciao,
quello penso di saperlo. Il fatto è che in questo momento sto programmando un HW.
Allora ti giro la domando in questo modo: Io avrei la necessità di inviare un carattere terminatore (ctrl+Z = 0x1A) ma non riesco. Io faccio cosi:
unsigned char* a;
*a = 0x1A;
send(a);
dove send(a) è una funzione che richiede un puntatore ad una stringa.
Cosi facendo, anzichè mandarmi il caratttere terminatore mi manda una stringa di caratteri incomprensibili
Grazie ciao
Quindi non c'entra nulla la conversione; in effetti Lele aveva risposto correttamente ...
Se la send accetta un puntatore ad una stringa, probabilmente questa non invia solamente il primo carattere ma tutta la stringa puntata. E dato che la stringa viene terminata da uno zero binario, mancando questo terminatore, viene inviato tutto quello che trova dopo il carattere che hai inserito (ovviamente caratteri casuali).
Devi quindi correggere in questo modo
unsigned char a[2];
a[0] = 0x1A;
a[1] = 0x00;
send(a);
A parte il fatto che, ti faccio solo notare, il codice che hai scritto e' errato comunque in quanto non prevede l'allocazione del singolo carattere ...
Si la conversione non c'entra niente.
Cmq ho fatto come mi hai detto e funziona correttamente.
Gentilissimo grazie... Ciao grazie
Giangi![]()