ciao, vorrei rendere in esadecimale una stringa.
Esiste una funzione in C per effettuare la conversione ascii/hex e viceversa?
grazie![]()
ciao, vorrei rendere in esadecimale una stringa.
Esiste una funzione in C per effettuare la conversione ascii/hex e viceversa?
grazie![]()
Cioè? Non abbiamo (io o altri) la sfera di cristallo ....Originariamente inviato da devil89
vorrei rendere in esadecimale una stringa.
Forse data una stringa "ciao" vuoi ottenere la stringa "6369616F" (dove ad esempio 63 è il valore in hex del carattere 'c')??
Comunque no, non c'è una funzione per fare cose del genere, te la devi fare tu (e ci sono svariate possibilità).
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Una di queste soluzioni e' la sprintf o simili ... ma devi chiarire la richiesta ...
Intendi data una stringa "F" ottenerne il valore 0xF ???
io intendevo appunto...non credo fosse difficile da capire...se esiste una funzione C ansi che mi permetta di ottenere, dato una stringa di caratteri, la relativa rappresentazione esadecimale.
comunque sembra che non esista tale funzione.
Ho trovato questo, ma non riesco a compilarlo con Visual C++:
codice:#define BYTES 7 void ToHex(unsigned char *p, char *s) { int i; for(i=0; i<BYTES; i++) printf(s+i*2, 2, "%02X", *(p+i)); *(s+i*2)=0; } int main(int argc, CHAR* argv[]) { unsigned char b[] = {0x00, 0x12, 0x34, 0x56, 0xAA, 0x55, 0xFF}; char *st; st=(char *)malloc(2*BYTES*sizeof(char)+1); ToHex(b, st); printf("%s\n", st); free(st); return 0; }
ho risolto. ho linkato il file header tchar.h
E sei sicuro che faccia quello che ti serve ? E soprattutto, che funzioni ?
P.S. Un file .h si include non si linka ...
scusa per l'errore gergale![]()
ho un problema....non mi è chiaro come "lavora" la funzione.
forse non è quello che serve a mè. la funzione toHex cosa converte?
io vorrei, passare in input una stringa tipo "ciao" e avere di ritorno o stampato a video il valore in esadecimale.
vi ringrazio dell'attenzione
Beh ... ti sembrera' un dettaglio, ma se parliamo di programmazione, non e' proprio una formalita' ...Originariamente inviato da devil89
scusa per l'errore gergale![]()
Infatti ... non solo non fa quello che ti serve, ma e' pure sbagliata ...ho un problema....non mi è chiaro come "lavora" la funzione.
forse non è quello che serve a mè. la funzione toHex cosa converte?
Ecco ... adesso sei stato piu' chiaro ... anche se non credevi fosse difficile capirti, ti confermo che la tua richiesta iniziale non era chiara e lasciava aperte diverse strade ...io vorrei, passare in input una stringa tipo "ciao" e avere di ritorno o stampato a video il valore in esadecimale.
Comunque, ecco un esempio da cui prendere spunto ...
codice:int main() { char s[] = "Essere o non essere"; char x[100]; char *p=s, *d=x; while(*p) { sprintf(d, "%02X", *p++); d+=2; } *d=0; printf("%s\n", x); return 0; }
grazie. giusto per vedere se ho capito come lavora la funzione..la commento:
a cosa serve azzerare il puntatore d?codice:int main() { char s[] = "Essere o non essere"; char x[100]; char *p=s; // Assegna al puntatore l'indirizzo iniziale dell'area di memoria di s char *d=x; // Stessa cosa.... while(*p) { sprintf(d, "%02X", *p++); // Copia nell'array x, il valore hex di s[0] d+=2; // vengono occupati 2 byte, quindi si sposta di 2 il puntatore nell'array x } *d=0; printf("%s\n", x); return 0; }