Binary TO Decimal
Unsolved
German
-
Hallo,
ich versuche über ein LineEdit ein Binärmuster einzulesen und über eine LCDNumber auszugeben.
Allerdings wird mir aus einen binäre Wert 0101 dezimal der Wert 10 ausgeben, was ja bekanntlich Flasch ist. Die Bit Reihenfolge ist gedreht, das niederwertige Bit ist nicht mehr rechts sondern links.Ich weiß nicht wie ich es drehen kann?
void Dialog::on_pushButton_2_clicked() { //ui->lineEdit->setAlignment(Qt::AlignRight); //ui->lineEdit->setLayoutDirection(Qt::RightToLeft); QString bin; double ausgabe = 0; bin = ui->lineEdit->text(); int end = bin.size(); for(int i = 0; i != end; ++i) { QString c = bin[i]; if (c == '1' || c == '0'){ if (c == '1') ausgabe += pow(2, i); } } ui->lcdNumber->display(ausgabe); }
-
Einfach die for-Schleife rückwärts ausführen. Also bei size() - 1 anfangen und auf 0 runter zählen.
Sorry - natürlich dann auch anstatt pow(2, i) pow (2, size() - i - 1)for(int i = 0; i < bin.size(); ++i) { QChar c = bin[i]; if (c == '1') ausgabe += pow(2, bin.size() - i - 1); }
Oder am einfachsten: QString::toInt()
-