Char to int jak?

Odpovědět
daton
Příspěvky: 577
Registrován: 16 bře 2013, 16:12

Char to int jak?

Příspěvek od daton » 13 zář 2020, 09:54

Ahoj všem
mám zde jeden problém který je banální ale nějak jsem se na něm zasekl. Potřebuji z klávesnice, kde je vždy jen jeden číselný znak
(1-9) matice 3x3 z písmenového typu char převést na int.
mám tam takovou to konstrukci

Kód: Vybrat vše

 char key = keypad.getKey();
  
  if (key){
    Serial.println(key);
int result = atoi(key);
jak jsem se dočetl atoi umí převést char na int ale mě to nějak nefunguje. Prosím tedy ti co už s tímto konstruktem pracovali zda by mi nepomohly přijít na problém případně zda by jste někdo nenavrhl jiné řešení. Třeba něco jako
String to int

což mi ale v char taky nefunguje. Díky

Uživatelský avatar
fulda
Příspěvky: 1033
Registrován: 04 led 2016, 17:18

Re: Char to int jak?

Příspěvek od fulda » 13 zář 2020, 12:34

ee že se tak ptám, jak je definovaná ta funkce keypad.getKey(); ? Je to TAHLE?

Ta prosímpěkně vrzcí int, který je ASCII hodnota, takže bude stačit to napsat:

Kód: Vybrat vše

void keyPressed(){
 int key = keypad.getKey();
 Serial.println(key);
 int result = key - int '0';
}
Za pravopisné chyby v této zprávě může moje učitelka češtiny.

daton
Příspěvky: 577
Registrován: 16 bře 2013, 16:12

Re: Char to int jak?

Příspěvek od daton » 13 zář 2020, 14:43

Ahoj
dik za pomoc nenapadlo mě to přiřadit hned myslel jsem že to nejde, ale zjevně můj předpoklad byl chybný. Sice to negeneruje klasicky 1,2 3 ale místo 1 je 49 dvojka 50 atd ale to už asi nevadí tak to vždy odečtu 48 a je to, nebo by se to dalo nějakým převodem přes matici ale to by asi pro účely klávesnice bylo zbytečně složité. Díky

Uživatelský avatar
fulda
Příspěvky: 1033
Registrován: 04 led 2016, 17:18

Re: Char to int jak?

Příspěvek od fulda » 13 zář 2020, 16:04

Hele, jen tak mimochodem - ty jsi se moc nedíval na ten kód co jsem poslal žejo?
Ani jsi nestrávil moc dlouho nad slovem ASCII, které jsem tam napsal co?
Za pravopisné chyby v této zprávě může moje učitelka češtiny.

daton
Příspěvky: 577
Registrován: 16 bře 2013, 16:12

Re: Char to int jak?

Příspěvek od daton » 13 zář 2020, 17:37

Ahoj
Ale jo, maš pravdu bádání přijde večer nebo po ránu přes den je moc manuálních úkonů, které mají dle druhého člena domácnosti jasnou přednost, proto jsem jen v rychlosti něco zkusil a pak odepsal. Jo chápu ale stejně mi to trochu vrtá hlavou, stáhnul jsem knihovnu keypad a ta si má rozumět hlavně s maticí klávesnice 4x4 nebo 3X3 atd. Předpokládal jsem, že tam se asci kódování uplatnovat nebude a bude to čistě o znacích co jsou na těchto klávesnicích. Netušil jsem že tam bude použit standardní kod pro klávesnice a tedy že tam je asci.
Taky proto že jsem nechtěl vrtat do knihovny jsem to chtěl převést char na int a pouze tak předělat výstup co dává ta knihovna resp příkaz
keypad.getKey()

DavidO
Příspěvky: 959
Registrován: 01 kvě 2013, 21:27

Re: Char to int jak?

Příspěvek od DavidO » 14 zář 2020, 22:19

atoi převádí řetězec na číslo. Jestli máš v ruce jediný znak (který představuje cifru 0 až 9), tak od toho znaku odečteš '0' a je to:
int key = keypad.getKey() - '0';
Akorát musíš vědět, že ti ta getKey nevrátí nic jiného, než jen a pouze 0-9, protože jinak by ti samozřejmě vyšel nesmysl.

Odpovědět

Kdo je online

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