[C] Conversione da decimale a esadecimale

di Anonimizzato21577 il
38 risposte

38 Risposte - Pagina 3

  • Eh, M2, me le metto da parte e ci do una bella occhiata dopo, perché la ricorsione mi fa spesso girare la testa più di quel che sarebbe bello ammettere. Insomma, dovrò spremermi un po' per capire cosa hai fatto.

    A proposito di itoa()... so che esiste, ma non credo sia standard in senso stretto.
  • AldoBaldo ha scritto:


    Eh, M2, me le metto da parte e ci do una bella occhiata dopo, perché la ricorsione mi fa spesso girare la testa più di quel che sarebbe bello ammettere. Insomma, dovrò spremermi un po' per capire cosa hai fatto.
    E' banale in effetti, ma interessante.
    Assai più banale di quanto sembri.
    Più "carino" l'impacchettamento binario dentro un numero decimale (la moltiplicazione per 10).
    A proposito di itoa()... so che esiste, ma non credo sia standard in senso stretto.
    ... è dentro stdlib...
    Si può usare? Boh.
    Visto che il testo consente addirittura di usare printf, allora tanto vale.
    Comunque sono aspetti di cui non ho grande consuetudine.
  • AldoBaldo ha scritto:


    Potresti preimpostare una stringa che contenga tutte e sedici le cifre necessarie alla rappresentazione in base esadecimale, nell'ordine da 0 a 15, tipo: kCifre[] = "0123456789ABCDEF";

    A quel punto basta "prelevare" la cifra prelevandola dalla posizione corrispondente usando come indice il valore da rappresentare...
    Ok, grazie anche se non ho ancora affrontato l'argomento stringhe.
  • candaluar ha scritto:


    Comunque questa è la soluzione
    #include <stdio.h>
    void main()
    {
    	int i;
    	for (i = 1; i <= 256; i++)
    		printf("%d %o %X\n", i, i, i);
    }
    In effetti nel testo dell'esercizio c'è scritto ma non sapevo a cosa si riferisse o meglio come usarli nel codice....
    [Potete stampare un intero come un valore ottale o esadecimale rispettivamente con gli specificatori di conversione %o e %X.]
  • @ +m2+

    Come promesso ho dedicato un po' di usura neuronale per capire i procedimenti che hai proposto (il metodo della doppia conversione binario/decimale e quello della ricorsione). Ho dovuto riscrivere il tutto "esplodendo" quelle espressioni riassunte in una o due righe, ma alla fine il quadro mi è apparso chiaro. Direi che si tratta di "biechi" trucchi che forzano delle false conversioni per le quali, ad esempio, il decimale 101 viene arbitrariamente considerato equivalente a 5 (assegnare 101 a un unsigned int e assegnargli 5 non è che sia esattamente la stessa cosa...) Insomma, non credo di esagerare a definire quei procedimenti una specie di "gioco di prestigio" informatico. Sbaglio?
  • A dire il vero esiste un procedimento di calcolo ben preciso per convertire il decimale in binario ( o ottale o esadecimale). Non è un copia/incolla...se ti riferivi a questo... Nel codice sorgente alla prima pagina alla mia domanda c'è il procedimento: Decimale/2^x (pos.x) Decimale%2^x/2^(x-1) (pos.x-1) Decimale%2^x%2^(x-1)/2^(x-2) (pos.x-2) così via....
  • Jackie, mi riferivo ai due metodi di conversioni indicati da m2, che funzionano ma mi son sembrati un po'... ehm... creativi.
    Probabilmente è una "creatività" intenzionale, per stupire, e per quello ho parlato scherzosamente di "giochi di prestigio".
  • AldoBaldo ha scritto:


    Jackie, mi riferivo ai due metodi di conversioni indicati da m2, che funzionano ma mi son sembrati un po'... ehm... creativi.
    Probabilmente è una "creatività" intenzionale, per stupire, e per quello ho parlato scherzosamente di "giochi di prestigio".
  • AldoBaldo ha scritto:


    @ +m2+

    Come promesso ho dedicato un po' di usura neuronale per capire i procedimenti che hai proposto (il metodo della doppia conversione binario/decimale e quello della ricorsione). Ho dovuto riscrivere il tutto "esplodendo" quelle espressioni riassunte in una o due righe, ma alla fine il quadro mi è apparso chiaro. Direi che si tratta di "biechi" trucchi che forzano delle false conversioni per le quali, ad esempio, il decimale 101 viene arbitrariamente considerato equivalente a 5 (assegnare 101 a un unsigned int e assegnargli 5 non è che sia esattamente la stessa cosa...) Insomma, non credo di esagerare a definire quei procedimenti una specie di "gioco di prestigio" informatico. Sbaglio?
    Solo un paio di esempi di come si possono usare approcci diversi per lo stesso problema.
    il 'gioco di prestigio' in questo caso è il medesimo, cioè usare numeri interi in base 10 per rappresentare... numeri in base 2
    Non sono particolarmente istruttivi, se non per insegnare a pensare fuori dagli schemi usuali (numeri rappresentati da simboli a loro volta da caratteri).
    Non é per un livello didattico basico primi passi.
    ne sono poi così intelligenti o interessanti.
    Diciamo che la 'lezione' è più filosofica che altro
Devi accedere o registrarti per scrivere nel forum
38 risposte