[C] Conversione da decimale a esadecimale

di il
38 risposte

38 Risposte - Pagina 3

  • Re: [C] Conversione da decimale a esadecimale

    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.
  • Re: [C] Conversione da decimale a esadecimale

    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.
  • Re: [C] Conversione da decimale a esadecimale

    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.
  • Re: [C] Conversione da decimale a esadecimale

    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.]
  • Re: [C] Conversione da decimale a esadecimale

    @ +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?
  • Re: [C] Conversione da decimale a esadecimale

    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....
  • Re: [C] Conversione da decimale a esadecimale

    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".
  • Re: [C] Conversione da decimale a esadecimale

    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".
  • Re: [C] Conversione da decimale a esadecimale

    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