Ciao ragazzi
Volevo chiedervi delle delucidazioni su come convertire un numero binario (ok non e` binario effettivamente, ma un int generico con solo uni e zeri)
int quarantasei= 101110;
void setup() {
Serial.begin(9600);
}
void loop() {
int res=0; //risultato parziale
int i=0;
int temp= quarantasei;
while(temp !=0) {
int temp2= pow(2,i); //2^(i) //float?
temp2= temp2*(temp% 2); //2^(i) * 0 or 1
res= res+ temp2; //partial result
Serial.println((String)"res: "+res); //check
i++;
temp= temp/10;
}
Serial.println(" ");
Serial.println(res);
while(1>0) {}
}
L'idea di base era quella di fare un prodotto scalare tra le potenze di 2 e i "bit" del numero binario:
<x, y> = <(1,2,4,8,16,32), (0,1,1,1,0,1)>.
Tuttavia, la funzione POW non ritorna sempre risultati corretti (e forse questo ha a che fare con il fatto che e forse necessario usare float) e l'operatore % fa qualcosa che sfugge alla mia comprensione (ma questo probabilmente perche
temp2 e` sbagliato).
Vi ringrazio per l'attenzione.