Stránka 1 z 1

Char to int jak?

Napsal: 13 zář 2020, 09:54
od daton
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

Re: Char to int jak?

Napsal: 13 zář 2020, 12:34
od fulda
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';
}

Re: Char to int jak?

Napsal: 13 zář 2020, 14:43
od daton
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

Re: Char to int jak?

Napsal: 13 zář 2020, 16:04
od fulda
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?

Re: Char to int jak?

Napsal: 13 zář 2020, 17:37
od daton
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()

Re: Char to int jak?

Napsal: 14 zář 2020, 22:19
od DavidO
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.