Jak zapisywać i odczytywać RGB w dziesiętnym.

0

W jaki sposób się zapiuje i odczytuje RGB w dziesiętnym? Nie mogę znaleźć w internecie. Interesuje mnie algorytm i wytłumaczenie jak to działa : D

0

a czemu nie w szesnastkowym?

0

Chodzi mi o przechowywanie RGB w int.

int rgb = 255 << 16 | 20 << 8 | 115 ;

Czy mógłby ktoś to rozpisać używająć podstawowych operatorów arytmetycznych?

1

No to uzywasz szestnatkowego. Jaki jezyk?
W Pythonie zapisalbys to np jako rgb = int("fff", 16)

0

C#

Cieżko mi idzie zrozumieć te przesuwanie bitów.

0

Są narzędzia normalnie w .NET, ale ja chce to zrozumieć.

0
Pijany Ogórek napisał(a):

Chodzi mi o przechowywanie RGB w int.

int rgb = 255 << 16 | 20 << 8 | 115 ;

Czy mógłby ktoś to rozpisać używająć podstawowych operatorów arytmetycznych?

Int ma 32bity czyli 4 bajty. możę wyglądać tak: | bajt a | bajt b | bajt c | bajt d |, gdzie d jest najmłodszy natomiast a najstarszy. Operator << to przesunięcie bitowe. 255 << 16 to przesunięcie wartości 255 o 16 bitów w lewo, czyli wartość 255 zostanie wpisana do bajtu b a wszędzie poza nim będą zera. Teraz 20 << 8 przesuwa wartość 20 na bajt c a operatorem | wykonywana jest suma logiczna (lub, or) co w wyniku da nam inta w którym na bajcie b jest 255 a na bajcie c jest 20. Zostaje jeszcze wpisanie 115 na bajt d, tam nie trzeba przesuwać. Na jednym bajcie można zapisać bez znaku (czyli rozpatrując same dodatnie liczby) w zakresie 0 do 255. Mamy trzy kolory więc można przyjąć że na bajcie b będzie red, na c green a na d blue. Wpisana na te bajty wartość oznacza intensywność danej skłądowej w wynikowym kolorze.

Mam nadzieję, że pomogłem ;)

0
int rgb = 255 << 16 | 20 << 8 | 115 ;
int rgb = 255 * 65536 + 20 * 256 + 115;

Te dwa są sobie równoważne (o to chodziło?)

1 użytkowników online, w tym zalogowanych: 0, gości: 1