Forum - C/C++
- Conversione da binario a decimale
Liuk (Normal User)
Rookie
Messaggi: 21
Iscritto: 01/09/2011
Ciao, ho un programma che prende una stringa in binario e la deve convertire in decimale (devono essere 24 bit).
Qui č dove prendo la stringa:
Codice sorgente - presumibilmente C#
int main( )
{
int i, flag= 0 ;
char bin[ DIM] , tmpBin[ DIM] ;
clear( ) ;
setColor( 1, 0, 32) ;
printf( "\n Conversioni tra basi\n " ) ;
setColor( 1, 0, 1) ;
do
{
flag = 0 ;
printf( "\n Inserisci numero in binario (24bit): " ) ;
gets( tmpBin) ;
if ( isBinary( tmpBin, strlen( tmpBin) ) == 0 || strlen( tmpBin) != 24)
flag= 1 ;
}
while ( flag== 1) ;
strcpy( tmpBin, bin) ;
printf( " In decimale: %d" , binToDec( bin, strlen( bin) ) ) ;
printf( "\n In esadecimale: %d" , decToHex( binToDec( bin, strlen) , strlen( bin) ) ) ;
pEnter( ) ;
clear( ) ;
return 0 ;
}
e questa č la funzione che dovrebbe convertire:
Codice sorgente - presumibilmente C++
int binToDec( char bin[ ] , int len)
{
char convBin[ DIM] ;
int i, j;
int ris= 0 ;
for ( i= 0, j= len; i< len; i++ , j-- )
{
ris + = ( int ) ( bin[ i] - 0) * pow ( 2, j) ;
}
}
Solo che mi da segmentation fault. Aiuto
gigisoft (Member )
Guru
Messaggi: 696
Iscritto: 11/10/2008
Postato originariamente da Liuk :
Ciao, ho un programma che prende una stringa in binario e la deve convertire in decimale (devono essere 24 bit).
[...]
e questa č la funzione che dovrebbe convertire:
Codice sorgente - presumibilmente C++
int binToDec( char bin[ ] , int len)
{
char convBin[ DIM] ;
int i, j;
int ris= 0 ;
for ( i= 0, j= len; i< len; i++ , j-- )
{
ris + = ( int ) ( bin[ i] - 0) * pow ( 2, j) ;
}
}
Solo che mi da segmentation fault. Aiuto
Salve,
ci sono delle cose che non comprendo;
+=(int) : non l'ho mai visto, ma suppongo che sia un cast esplicito, giusto?
pow(2, j) : e' una funzione che hai scritto tu? Magari l'errore potrebbe essere li';
char convBin[DIM] : a che serve?
return ris : manca alla fine della funzione;
in ogni caso io proverei a farla, cosi':
Codice sorgente - presumibilmente C++
int binToDec( char bin[ ] , int len)
{
int ris;
if ( bin[ len] == '1' ) { ris = 1 ; }
else { ris = 0 ; }
if ( len > 1) { ris + = 2 * binToDec( bin, len - 1) ) ; }
return ris;
}
Ciao.
Ultima modifica effettuata da gigisoft il 08/09/2011 alle 14:03