Go Down

Topic: Atascado - Conversor Binario a Decimal (Read 3686 times) previous topic - next topic

Hola, estoy desarrollando un pequeño firmware para mi Arduino Mega y necesito convertir un array de X tamaño binario a un número decimal.

Esta es la función que he desarrollado:
Code: [Select]
int binToDec(int orig[], int tam){
  int acum = 0, pot;
  double aux;
  for (int i = (tam-1); i >= 0; i--){
    if (orig[i] == 1){
      pot = (tam-1)-i;
      aux = orig[i]*pow(2,pot);
    }
    else{
      aux = 0;
    }
    acum += int(aux);
    pot = 0;
    aux = 0;
  }//for
 
  return acum;
}//binToDec


Los números del '0000' (0) al '0011' (3) los convierte perfectamente, a partir de ahí empieza a quedarse con una unidad.

Gracias por vuestra ayuda.
Doing as nobody do before

chiva

Aquí te dejo el algoritmo que hice para mis programas, adaptado a tu caso:

Code: [Select]
int binToDec(int orig[], int tam){
  int result = 0;
  for (int i=0;i<tam;i++){
    result *= 2;
    result += orig[i];
  }
  return result;
}


Un saludo
Mercadillo electrónico. Kit iniciación a Arduino, shield LCD a color y más cosas!

Igor R

#2
Feb 15, 2011, 10:51 pm Last Edit: Feb 15, 2011, 11:03 pm by Igor R Reason: 1
chiva,hay algo que no me cuadra ahi...pásale un 0b10 (2 decimal), 0b100,0b1000,.... y veras que pasa....

chiva

No he probado el código, lo he rehecho de un programa que tenía por ahí y usaba un while y un puntero independiente al del vector, por lo que he tenido que modificarlo casi entero.

¿Que fallo le ves? Así a ojo no le veo nada malo
Mercadillo electrónico. Kit iniciación a Arduino, shield LCD a color y más cosas!

Igor R

número=b100

i=0
result=0*2=0
result=0+0=0

i=1
result=0*2=0
result=0+0=2

i=2
result=0*2=0
result=0+1=1


no??

chiva

¿Y no sería mas bien?

número=b100

i=0
result=0*2=0
result=0+1=1

i=1
result=1*2=2
result=2+0=2

i=2
result=2*2=4
result=4+0=4

Al menos en España leemos los números de izquierda a derecha, no se como lo haréis en UK :P
Mercadillo electrónico. Kit iniciación a Arduino, shield LCD a color y más cosas!

Igor R

#6
Feb 15, 2011, 11:35 pm Last Edit: Feb 15, 2011, 11:49 pm by Igor R Reason: 1
uy!! desde que conduzco al revés...... :*
Inconscientemente lo leía como se ve en binario de derecha a izquierda, y me he "liao".

Sirve si digo que no has especificado si era formato intel o motorola???   ;)


ja,ja,ja

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy