Jak zmienić tablicę na liczbę całkowita?? - Wersja do druku +- Arduino Polska Forum (https://forum.arduinopolska.pl) +-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino) +--- Dział: Piaskownica (https://forum.arduinopolska.pl/dzial-piaskownica) +--- Wątek: Jak zmienić tablicę na liczbę całkowita?? (/watek-jak-zmieni%C4%87-tablic%C4%99-na-liczb%C4%99-ca%C5%82kowita) |
Jak zmienić tablicę na liczbę całkowita?? - Jarewa0606 - 04-03-2019 dam przykład mam tablicę x[] = (1,2,3,4); i liczbę całkowitą int y; teraz jak zapisać x[0] = 1; x[1] = 2; x[2] = 3; x[3] = 4; do postaci liczby y= 1234 RE: Jak zmienić tablicę na liczbę całkowita?? - kaczakat - 05-03-2019 y=x[0]*1000+x[1] x100+ ...itd. RE: Jak zmienić tablicę na liczbę całkowita?? - Jarewa0606 - 05-03-2019 Zapomniałem napisać ale chyba to ważne że tablice mam w char. Jaka tablice dać? Bo w char krzaki wychodza? RE: Jak zmienić tablicę na liczbę całkowita?? - kaczakat - 05-03-2019 Char to też liczba 0-255, można to wykorzystać, że określone cyfry to określona liczba i odjąć stałą przesunięcia w tablicy char bo znaki drukowalne są przesunięte o kilkadziesiąt. Są też do tego gotowe funkcje, w C konwertujesz itoa (int to asccii), atoi w druga stronę, w C i w Arduino możesz skleić napis w String i cały przekonwertować funkcją https://www.arduino.cc/reference/en/language/variables/data-types/string/functions/toint/. Do każdego typu liczb są inne funkcje, więc jak masz jakieś przecinki to musisz wiedzieć. Kod: String myString=""; Jaką liczbą jest znak możesz sprawdzić oczami Serial.println((uint8_t) (x[0])); Metod jest wiele, warto sprawdzać przy łączeniu czy znak jest cyfrą. RE: Jak zmienić tablicę na liczbę całkowita?? - Jarewa0606 - 05-03-2019 No właśnie to liczba co chce zmienić przechwytuje pakiet UDP AC1234\n rozbijam to do tablicy char ubuffer [0] ubuffer [1] itd.. wyluczam litery AC i koniec \n i zrobiłem tak jak wyżej int zmienna =ubufffer[2]*1000+ubuffer[3] x100+ ...itd do [5] Co widać że po przechwyceniu w tablicy mam AC1234\n A po obliczeniu zmienna 54562 Zobaczę wieczorem ze stringiem choć to było łatwiejsze RE: Jak zmienić tablicę na liczbę całkowita?? - Robson Kerman - 05-03-2019 Kaczakat dobrze pisze, tylko że nie istnieje coś takiego jak konkatenacja zmiennych char. Trzeba je od razu konwertować do String. Kod: myString = String(x[0]) + String(x[1]) + ...itd.; A potem dopiero można zrobić z tego inta: myString.toInt() RE: Jak zmienić tablicę na liczbę całkowita?? - kaczakat - 05-03-2019 Przyznaję, że w poprzednim poście pomieszałem trochę C i Arduino, konwertować literek w ogóle nie trzeba, bo tablica char (i powinna być zapisana np. jak poniżej, by było wiadomo, że to literki) jest C stringiem i całą można zamienić na stringa Arduino. Ale można ją też w całości przekonwertować na liczbę, jeśli jest już sprawdzona: Kod: char tabchar[]={'1','2','3','4'}; RE: Jak zmienić tablicę na liczbę całkowita?? - Jarewa0606 - 06-03-2019 Dzięki chłopaki za pomoc działa pierwszy sposób znalazłem u siebie błąd głupi błąd bo ja pakiet udp telefonem wysyłałem i wysyłałem w HEX ale liczby 1,2,3 jako 0x31 0x32 itd.. Dopiero przy stringach mi wyszło że liczba wysłana to w udp hex bedzie 0x01 0x02 itd.. Ja początkujący raczkujący. Wiec y=x[0]*1000+x[1] x100+ ...itd. jest OK Robię komunikacje ESP8266 - ESP32 gdzie ESP8266 obsługuje dwa wyświetlacze a ESP32 czujniki i dane z czujników przesyłam przez UDP , UDP rozdzielam przechwytuje które dane są dla danego wyświetlacza. RE: Jak zmienić tablicę na liczbę całkowita?? - Jarewa0606 - 08-03-2019 (06-03-2019, 00:17)Jarewa0606 napisał(a): Dzięki chłopaki za pomoc działa pierwszy sposób znalazłem u siebie błąd RE: Jak zmienić tablicę na liczbę całkowita?? - Jarewa0606 - 08-03-2019 Jednak powrócę do tematu. Zrobiłem to na stringach i uklepałem takie coś: Kod: if (startMarker_AC == rc_){ // sprawdzanie czy pierwszy bajt to 0x41 dla AC W pakiecie jest "AC1234\n wiec tablicą wyciągałem samą liczbę bo jednak dobra funkcja jak liczba jest ujemna... Działa to ale niestety po kilkunastu sekundach wywala błedem i resetem ESP32 |