Převod čísla v DEC na BIN

Odpovědět
Axamith
Příspěvky: 530
Registrován: 09 srp 2017, 08:17
Reputation: 0
Kontaktovat uživatele:

Převod čísla v DEC na BIN

Příspěvek od Axamith » 22 úno 2018, 13:04

Pracuji na projektu, který mi dává jako výsledek číslo, datový formát long.
Potřebuji tento výsledek převést na binární číslo. Pročetl jsem na toto téma spoustu příspěvků, našel jsem jeden, který se jeví jako použitelný. https://forum.arduino.cc/index.php?topic=95263.0

Kód: Vybrat vše

void setup()
{
  Serial.begin(9600);
}

void loop()
{  
long myNum = 1234567890;
long zeros = String(myNum,BIN).length();
String myStr;
for (int i=0; i<zeros; i++) {
  myStr = myStr + "0";
}
myStr = myStr + String(myNum,BIN);         
Serial.println(myStr);    //             
delay(1000);
}
Pro příklad převádím číslo 1234567890, výsledek jsem si pro jistotu spočítal sám (abych měl jistotu, co vlastně hledám za výsledek), binární hodnota je 1001001100101100000001011010010, tedy 31 znaků.
Uvedený kód mi vrací 00000000000000000000000000000001001001100101100000001011010010. Barevně oddělená část je požadovaný výsledek.
Jako odfiltrovat úvodní nuly, respektive vypíchnout samotné výsledné číslo (může začínat nulou, takže nejde jen o znak "nula")?

petan
Příspěvky: 358
Registrován: 23 črc 2017, 10:19
Reputation: 0
Kontaktovat uživatele:

Re: Převod čísla v DEC na BIN

Příspěvek od petan » 22 úno 2018, 13:36

Myslíš to tak, že chceš oříznout číslo na nějakou konkrétní délku, nebo třeba když bude vstupní číslo 30 (11110) bylo pouze těchto pět znaků?

Procházel bych celý řetězec zleva a až bych našel první jedničku, tak od tohoto místa bych to začal kopírovat do jiné proměnné, ve které by pak byl výsledný řetězec. I Arduno na to má funkce...

https://www.arduino.cc/en/Tutorial/StringIndexOf

Axamith
Příspěvky: 530
Registrován: 09 srp 2017, 08:17
Reputation: 0
Kontaktovat uživatele:

Re: Převod čísla v DEC na BIN

Příspěvek od Axamith » 22 úno 2018, 13:41

Heuréka, asi si odpovím sám. Po několikahodinovém hledání jsem v zoufalství napsal dotaz na fórum a následně najdu kód, který to řeší :-). Sice moc nechápu jeho princip, ale sype to binární číslo a počet obsazených znaků. http://stm32duino.com/viewtopic.php?f=3&t=1813

Kód: Vybrat vše

void setup()
{
Serial.begin(9600);

}

void loop()
{ 
long myNum = 1234567890;
long zeros = String(myNum,BIN).length();//This will check for the length of myNum in binary.
Serial.println(zeros); //For myNum = 50. You will get a 6. 
delay(1000);

String myStr;
for (long i=0; i < 16 - zeros; i++) {//This will add zero to string as need
myStr = myStr + "0";
}
myStr = myStr + String(myNum,BIN); 
Serial.println(myStr); 
delay(1000);
}
Pokud má k tomu někdo co říci, uvítám jakýkoliv názor a zkušenost.

Uživatelský avatar
SkullKeep
Příspěvky: 290
Registrován: 23 srp 2017, 18:51
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: Převod čísla v DEC na BIN

Příspěvek od SkullKeep » 22 úno 2018, 13:43

:twisted: :?: :arrow: :geek: P. Q. M.

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 8 hostů