• 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"?

Object Storage Arubacloud
+3 głosów
29,477 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ź 734 wizyt
0 głosów
1 odpowiedź 615 wizyt
pytanie zadane 5 sierpnia 2018 w PHP przez hiveplay Początkujący (430 p.)
0 głosów
1 odpowiedź 417 wizyt
pytanie zadane 6 lutego 2018 w PHP przez tatar Użytkownik (740 p.)

92,579 zapytań

141,429 odpowiedzi

319,657 komentarzy

61,962 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...