Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

zamiana tablicy z elementami char na tablice z elementami int

wojtektorr 29 Sty 2013 18:54 2346 9
  • #1 29 Sty 2013 18:54
    wojtektorr
    Poziom 14  

    Witam, jakim sposobem najlepiej przekonwertować znaki w tablicy char w której sa zakodowane liczby dwucyfrowe na tablicę z wartościami uint8_t?

    0 9
  • #2 29 Sty 2013 19:21
    mickpr
    Poziom 39  

    wojtektorr napisał:
    Witam, jakim sposobem najlepiej przekonwertować znaki w tablicy char w której sa zakodowane liczby dwucyfrowe na tablicę z wartościami uint8_t?
    A nie lepiej zostawić taką tablicę i rzutować wartość wybranego pola na uint8_t bezpośrednio podczas żądanej operacji?

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0
  • #3 29 Sty 2013 19:23
    tmf
    Moderator Mikrokontrolery Projektowanie

    wojtektorr napisał:
    Witam, jakim sposobem najlepiej przekonwertować znaki w tablicy char w której sa zakodowane liczby dwucyfrowe na tablicę z wartościami uint8_t?


    A jak te liczby są kodowane? Jako para znaków ASCII? Jeśli tak to przepisać je do łańcucha 3-elementowego, z którego ostatni to NULL i potem atoi, czy coś w tym stylu, albo wprost (znak[x]-'0')*10+znak[x+1]-'0'.

    0
  • #4 29 Sty 2013 19:25
    BlueDraco
    Specjalista - Mikrokontrolery

    Zgaduję, że chodzi Ci o czytanie liczb z postaci znakowej. Jeśli dziesiętnie, to:

    liczba[i] = (cyfra[i << 1] - '0') * 10 + cyfra[(i << 1) + 1] - '0';

    0
  • #5 29 Sty 2013 19:25
    mickpr
    Poziom 39  

    tmf napisał:
    Jako para znaków ASCII?
    IMHO: typ Char nie pomieści 2 znaków ASCII :)
    Ja wiem, że może masz rację ale kolega napisał dokładnie:
    wojtektorr napisał:
    znaki w tablicy char

    0
  • #6 29 Sty 2013 19:39
    zumek
    Poziom 39  

    wojtektorr napisał:
    ... znaki w tablicy char w której sa zakodowane liczby dwucyfrowe ...

    A może chodzi o BCD :?:

    0
  • #7 29 Sty 2013 19:40
    mickpr
    Poziom 39  

    zumek napisał:
    A może chodzi o BCD
    Trudno się domyśleć, dopóki autor nie potwierdzi :)
    Prawda?
    A więc - autorze?

    0
  • #8 29 Sty 2013 19:58
    wojtektorr
    Poziom 14  

    Od początku...:) Z jednego procesora przez RS232 wysyłane są wartości liczbowe do drugiego taka funkcją:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    Jak widać tutaj parametrem funkcji jest wartość char a wstawiam wartość int. Po odebraniu znaki wrzucam do tablicy którą muszę z powrotem zamienić na int. Chcę otrzymać to co przed wysyłką. Chyba teraz już wiadomo o co chodzi :)

    0
  • #9 29 Sty 2013 20:02
    mickpr
    Poziom 39  

    wojtektorr napisał:
    Jak widać tutaj parametrem funkcji jest wartość char a wstawiam wartość int. Po odebraniu znaki wrzucam do tablicy którą muszę z powrotem zamienić na int. Chcę otrzymać to co przed wysyłką. Chyba teraz już wiadomo o co chodzi

    Jednym słowem "RZUTOWANIE". Kompilator może nie traktować użycia char i uint8_t zamiennie jako błąd, ale dobrym zwyczajem jest rzutowanie, aby nie było nawet warningów.

    0
  • #10 29 Sty 2013 20:07
    wojtektorr
    Poziom 14  

    Dzięki za szybką reakcję chodziło o rzutowanie:)

    0