PDA

Visualizza la versione completa : [C] Conversione da Esadecimale a char


GiangiIncazzato
19-12-2006, 10:30
Ciao,
mi servirebbe un'informazione.

Esiste in C una funzione che converte da eesadecimale a char?

:dh˛: :dh˛: :dh˛:

grazie ciao

LeleFT
19-12-2006, 10:46
In che senso?
Un carattere lo puoi esprimere con che base vuoi... decimale, esadecimale, ottale, binario...


printf("%c, %c, %c", 65, 0x41, 0101);


Ciao. :ciauz:

GiangiIncazzato
19-12-2006, 11:16
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

oregon
19-12-2006, 11:26
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 ...

GiangiIncazzato
19-12-2006, 11:30
Si la conversione non c'entra niente.

Cmq ho fatto come mi hai detto e funziona correttamente.

Gentilissimo grazie... Ciao grazie

Giangi :unz:

Loading