2012-09-03 4 views
1

나는 안드로이드 게임 개발 도서를 읽고 있는데, RGB 삼중 항 : 16 비트를 사용하는 (31, 31, 45) (빨강은 5 비트, 녹색은 6 비트, 파랑 5 비트를 얻음).16 비트의 RGB 색상을 인코딩

마지막 삼중 수의 숫자가 혼란 스럽습니다 : 마지막 좌표가 파란색이고 파란색이 5 비트 만 얻으면 마지막 좌표 자리에 45를 어떻게 사용할 수 있습니까? ? 파란색 숫자가 가능한 가장 높은 숫자는 31일까요?

아마도이 트리플렛은 분홍색을 만듭니다.

누군가가 혼란을 해결할 수 있습니까?

감사합니다.

편집 : 색상의 16 진수가 0xFC0D

입니다 도움이된다면

답변

1

당신의 16 진수 코드가 어떻게되는지 보여줍니다 : 45 = 0x2d하지만, 16 진수 코드 만 하위 비트에 0xd을 가지고, 기본적으로 상위 비트는 잘게 꺼져 있기 때문에 가능한 가장 높은 값은 0x1F입니다.

테스터/편집자가 미끄러 진 것 같습니다.

RGB 코드는 다음과 같이 내장되어 가능성이 높다은 :

RGB(r,g,b) 
{ 
    code = (r & 0x1f) << 11; 
    code |= (g & 0x3f) << 5; 
    code |= (b & 0x1f) << 0; 
} 

은 그래서 어떤 여분의 비트는 오프 마스크됩니다. 헥스

+0

좋아, 그 가지 책에서 항상 나를 좌절시킵니다. 그래도 고마워! – rage

0

FC0D 이진

1111110000001101 인 것 너무

R = b11111 = 31 G = b100000 = 32 B = b01101 = 13

관련 문제