Go Down

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

Wolfchamane

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