Conversione Binario decimale

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.

>rygel_b: in conformità al REGOLAMENTO della sezione Italiana del Forum, punto 13, il cross-posting è proibito (anche tra lingue diverse) e tu hai già posto la stessa domanda QUI.

Non solo, in quel thread ti stanno già rispondendo ed è veramente poco cortese abbandonare una discussione e chi ti stava aiutando, per venire di qua a porre la stessa domanda … ::slight_smile:

Poi, NON avendolo tu ancora fatto, ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto :wink:) e di leggere con MOLTA attenzione TUTTO il REGOLAMENTO.

Infine, per rispetto verso chi ti stava già aiutando nell'altro thread, questo tuo thread viene chiuso e ti prego di continuare dove avevi cominciato. Grazie.

Guglielmo