• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Co oznacza i na czym polega słowo "parse"?

VPS Starter Arubacloud
+3 głosów
29,902 wizyt
pytanie zadane 11 kwietnia 2015 w Java przez procent Obywatel (1,140 p.)
Co oznacza i na czym polega parsowanie? Przykładowo: (Color.parseColor("#00ff00")). Jak należy rozumieć taką linijkę kodu?

Pozdrawiam

3 odpowiedzi

+2 głosów
odpowiedź 11 kwietnia 2015 przez Mateusz Dalgiewicz Mądrala (5,270 p.)
wybrane 11 kwietnia 2015 przez procent
 
Najlepsza
Witam,

Może jaśniej, parsowanie jest to tłuamczenie jednego zapisu na inny czyli tłumaczenie "czegoś" zrozumiałego dla człowieka, na "coś" zrozumiałego dla komputera. Tlumaczenie czegoś na tak jakby jakąś wewnętrzną strukturę.

Klasa Color (rozumiem że mówimy tu o bibliotece przeznaczonej do programowania na androida) zawiera w swojej strukturze szereg zmiennych statycznych typu int które przedstawiają konkretne kolory. Więc aby ustawić kolor jakiegoś komponentu musimy wykorzystać te właśnie zmienne. Natomiast, wiadomo iż w informatyce kolory są przedstawiane za pomocą wielu modeli przestrzeni barw. Jednym z nich jest najczęściej używany model RGB (Red, Green, Blue). Kolory w klasie Color są również ustalane za pomocą tego modelu. W przypadku RGB kolor możemy zapisać za pomocą wartości dzięsiętnych (np. WHITE R=255/G=255/B=255) lub heksadecymalnych (WHITE #FFFFFF). A więc podsumowując, metoda Color.parseColor("#FFFFF") służy do przekonwertowania tej wartości heksadecymalnej (czyli w przypadku programowania jakiegoś Stringa określającego tą wartość heksadecymalną) na wartość typu int (wartość dziesiętną naszego koloru) za pomocą której możemy określić konretny kolor w klasie Color korzystając ze zmiennych statycznych int przedstawiających wybrany kolor.

Mam nadzieje że mniej więcej wyjaśniłem Ci o co chodzi :)
komentarz 11 kwietnia 2015 przez Jaskrowicz Obywatel (1,210 p.)

To może jeszcze dla uzupełnienia podam przykład.

Jeśli masz 

String jakisString = "597"

to jeśli potem zrobisz

int i = Integer.parseInt(jakisString);

To otrzymasz i = 597.  Czyli w skrocie mówisz Javie, że chcesz zrobić z tego stringu integer :).

0 głosów
odpowiedź 11 kwietnia 2015 przez krecik1334 Maniak (58,390 p.)
Parse oznacza analizę składniową.
0 głosów
odpowiedź 12 kwietnia 2015 przez procent Obywatel (1,140 p.)
Tak dokładnie chodzi tu o bibliotekę przeznaczoną na androida. Dużo mi się rozjaśniło po wypowiedzi Mateusza Dalgiewicza, ale postanowiłem bardziej się zagłębić. Jeśli źle rozumię to proszę poprawcie mnie.
Kolor RGB można obliczyć z następującego wzrou: numer koloru=R*65536+G*256+B, gdzie R,G,B przyjmują wartości od 0 do 255.
Przykładowo dla koloru WHITE wszystkie składowe (R,G,B) wynoszą 255. Postanowiłem to obliczyć podstawiając tę wartość do powyższego wzoru w wyniku czego otrzymałem liczbę: 16.777.215. Okazuję się że ta liczba w systemie heksadecymalnym wynosi FFFFFF, zatem odpowiada to koloru WHITE. Rozumiem że kolory w klasie Color przechowywane są za pomocą systemu dziesiętnego i wyglądają w ten sposób:
class Color
{
static int white=16.777.215
static int green=...
static int blue=...
.
.
}
Aby dostać się do koloru WHITE muszę przekonwertować liczbę FFFFFF na liczbę 16.777.215. W tym celu stosuję Color.parseColor("#FFFFFF"). To co po kropce określa to co chcę przekonwertować, czyli String przechowujący wartość heksadecymalną FFFFFF, natomiast to co przed kropką określa klasę z jakiej pobieram kolor? A gdzie informacja że konwertuję na system dziesiętny? Nie rozumiem jeszcze całości, zatem proszę o korektę. :)
komentarz 12 kwietnia 2015 przez Mateusz Dalgiewicz Mądrala (5,270 p.)
Nie jestem w stanie powiedziec Ci jak dokladnie klasa Color odwzorowuje kolory poniewaz nie zaglebialem sie nigdy w jej kod. Staralem sie raczej mniej wiecej przyblizyc Ci jak to dziala. Ze tak powiem ty jako programista nie musisz nic konwertowac ani martwic sie jak to dziala (chyba ze naprawde chcesz sie w to zaglebic) bo zrobi to za ciebie odpowiednia funkcja :) Tak te zmienne maja przypisane wartosci ktore okreslaja dany kolor. Klasa kolor posiada same statyczne metody oraz pola dlatego nei musisz tworzyc obiektu tej klasy tylko odniesc sie do danej metody bezposrednio po kropce. to co "po kropce" okresla metode ktorej uzywasz, natomiast to co przed kropka dokladnie tak jak napisales okresla Klase z ktorej korzystasz.

Polecam Ci zajrzec do dokumentacji moze rozjasni Ci sie jeszcze bardziej

http://developer.android.com/reference/android/graphics/Color.html

Podobne pytania

0 głosów
1 odpowiedź 818 wizyt
0 głosów
1 odpowiedź 638 wizyt
pytanie zadane 5 sierpnia 2018 w PHP przez hiveplay Początkujący (430 p.)
0 głosów
1 odpowiedź 430 wizyt
pytanie zadane 6 lutego 2018 w PHP przez tatar Użytkownik (740 p.)

93,020 zapytań

141,982 odpowiedzi

321,283 komentarzy

62,366 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...