Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1

    [C]Da stringa a intero

    Devo fare una funzione che converte una stringa presa da un file e convertirla in un intero in una determinata base.

    int s2n (char *);

    Avevo pensato di usare la atoi() che converte da stringa a intero in decimale. Poi usando una base a piacere avrei calcolato il suo valore nelle base specificata. Quello che non riesco a capire è se prendo una stringa da un file, non so a priori quanto è lunga.quindi come faccio a scorrela fermandomi alla fine? non so se è chiaro il mio dilemma...

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Ci pensa la atoi ... appena incontra il primo carattere non numerico, interrompe la conversione ...

  3. #3
    in pratica voglio dire:
    per calcolare i numero in una specificata base devo prendere un carattere alla volta. come faccio a prendere un carattere (o una cifra che era un carattere) alla volta per applicare il cambiamento di base e calcolare il nuovo numero?

    es
    char *s=1010;

    se uso la atoi mi uscira come valore 1010 in decimale ma se il risultato lo voglio in binario, è chiaro che il numero convertito non è 1010 ma 10=0*2^0+1*2^1+0*2^2+1*2^3
    quindi il 2 è il valore della base precedentemente impostato mentra le cifre sono calcolate dalla atoi.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    La conversione da stringa ad intero la fa la atoi. A questo punto hai un valore numerico intero in base 10.

    Per convertire un valore da base 10 a qualsiasi altra base, lo dividi piu' volte per la base e consideri i resti ... insomma, non ho capito qual e' il tuo problema ...

  5. #5
    ho modificato il messaggio sopra!!! scusa c'ho messo un pò...

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Intanto questa

    char *s=1010;

    e' sbagliata ... semmai deve essere

    char *s="1010";

    Poi, ti ho scritto nella mia ultima risposta, che dopo aver ottenuto il valore

    int v = atoi(s);

    puoi convertire v da decimale a qualsiasi altra base, dividendo continuamente il valore per la base e prendendo i resti (al contrario) e inserendoli in una stringa risultato ...

  7. #7
    come faccio a prendere i resti?

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Usi l'operatore modulo %

  9. #9
    si ok. ma a metterli uno dietro l'altro? uso una stringa? Mi sembra un pò un contro senso...

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Ovvio che devi utilizzare una stringa ... i valori numerici in base diversa dal decimale sono trattati come stringhe ...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.