Ahojte.
Prosím Vás viete mi niekto poradit ako získam z retazca znakov pozadovanú hodnotu a previest ju na integer?
Píšem si kod v Arduino prostredí a neviem prísť ako ked príjmem String v tvare GET /58 HTTP/1.1 ako z toho viem dostat ciselnu hodnotu za lomítkom ?
Císlo bude vzdy od 0 po 100 .
Samozrejme potom to previest na Integer.
Dakujem
Ziskanie hodnoty z retazca
Moderátori: psichac, Moderátori
Re: Ziskanie hodnoty z retazca
neotestoval som to, takže sa tam možno nájdu chyby, skôr ako inšpirácia jedného z riešení...
Číslo za lomítkom sa musí začínať na pozícii 5, čiže sa predpokladá že reťazec bude vždy v tvare "GET /..."
Číslo za lomítkom sa musí začínať na pozícii 5, čiže sa predpokladá že reťazec bude vždy v tvare "GET /..."
Kód: Vybrať všetko
String str = "GET /58 HTTP/1.1";
int base = 1;
int result = 0;
for(int i=7; i>4; i--)
{
char digit = str.charAt(i);
if(digit>='0' && digit<='9')
{
result = result+base*(digit-'0');
base=base*10;
}
}
Serial.print(result);
0
- jirka.jirka.
- Ultimate člen
- Príspevky: 1538
- Dátum registrácie: 17 Okt 2008, 00:00
- Bydlisko: Uherské Hradiště
- Kontaktovať používateľa:
Re: Ziskanie hodnoty z retazca
Vyzkoušeno a funkční:
Proměnou potom najdeš v hodnotě cislo
EDIT: ještě jsem to trošku upravil. Vymazal jsem sprintf, přidal podle čeho to parsovat. AŤ se ta funkce dá použít i jinde.
Jinak doplním. Testováno a odladěno zde: https://codepad.remoteinterview.io
Proměnou potom najdeš v hodnotě cislo
EDIT: ještě jsem to trošku upravil. Vymazal jsem sprintf, přidal podle čeho to parsovat. AŤ se ta funkce dá použít i jinde.
Jinak doplním. Testováno a odladěno zde: https://codepad.remoteinterview.io
Kód: Vybrať všetko
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <inttypes.h>
char string[] = "GET /10 HTTP/1.1";
/*Funkce, ktera provede extrakci dat z retezce*/
/*Velice jednoduse reseno*/
int dataven(char prikaz[], char *data[], char podleceho[])
{
char *ch; //promenna pointer
int i=0;
ch = strtok(string, podleceho); //najde prvni oddelovac a nahradi ho \0, dale se najde zacat umisteni retezce (adresa)
while (ch != NULL)
{
//printf("%s\n", ch);
ch = strtok(NULL, podleceho); //nyni najde dalsi oddelovac a jeho adresu umisti do ch, potom se vypise, atd, atd az do zblbnuti
data[i++] = ch;
i++;
}
}
int main() {
char *data[80]; //vystupni data
char rozdel[] = " /";
dataven(string, data, rozdel); //funkce pro extrakci dat
int cislo = atoi(*data); //konverze string to int
printf("%d", cislo); //no a uu enom vypis, ze to funguje
return 0;
}
0
- jirka.jirka.
- Ultimate člen
- Príspevky: 1538
- Dátum registrácie: 17 Okt 2008, 00:00
- Bydlisko: Uherské Hradiště
- Kontaktovať používateľa:
Re: Ziskanie hodnoty z retazca
A Eclipse taktéž souhlasí. Ono zde taky není nic, co by nemělo fungovat. Určitě se tato funkce bude hodit i jiným.
EDIT: Jenom se musím omluvit, až teď jsem si všiml, že to je pro arduino. Proto mě prosím nebijte, ale nechám to tu, třeba už jenom pro pochopení.
EDIT: Jenom se musím omluvit, až teď jsem si všiml, že to je pro arduino. Proto mě prosím nebijte, ale nechám to tu, třeba už jenom pro pochopení.
0
Re: Ziskanie hodnoty z retazca
Dakujem páni za reakciu. musim si to rozkodovat riadok po riadku aby som pochopil co to robi ja som v Ckode a Arduine zaciatocnik.
Inak asi som sa unahlis pretoze v konecnom dosledku bude ten link troska iny a vlastne budu dva tipy. napadla ma este jedna funkcia pre moj projekt ktorou to chcem vylepsit tak pred premenou bude este bude /value= alebo /set= a az potom bude hodnota ktoru budem potrebovat . ale to aby asi nemalo vadit. Tam si len zemni asi hodnoty aby som kontroloval ine znaky s Stringu. Teda ak chapem o co tu vlastne ide.
Dakujem
Inak asi som sa unahlis pretoze v konecnom dosledku bude ten link troska iny a vlastne budu dva tipy. napadla ma este jedna funkcia pre moj projekt ktorou to chcem vylepsit tak pred premenou bude este bude /value= alebo /set= a az potom bude hodnota ktoru budem potrebovat . ale to aby asi nemalo vadit. Tam si len zemni asi hodnoty aby som kontroloval ine znaky s Stringu. Teda ak chapem o co tu vlastne ide.
Dakujem
0
Re: Ziskanie hodnoty z retazca
Tak prisiel som na to ako to spravit v Arduine.
Toto je moj kod na ziskanie hodnoty zo Stringu.
Toto je moj kod na ziskanie hodnoty zo Stringu.
0
-
- Podobné témy
- Odpovedí
- Zobrazení
- Posledný príspevok
-
- 27 Odpovedí
- 2668 Zobrazení
-
Posledný príspevok od používateľa ray_001