겟픽셀로 0x000000 <<임의의 픽셀을 찾은다음에 red가 0~255에서 200이상이면 어떤 동작을 수행하게 하고 싶습니다. 저 16진수를 0~255로 바꾸는 방법 좀 부탁드립니다.
1) 픽셀 색상값의 의미를 몰라서 물어보시는건지.
아니면
2) 16진수를 10진수로 바꾸는 법을 모르시는건지.
1)
예를 들어. 어떠한 함수를 사용했고,
리턴 값이 0xFFAA00이고 이 함수는 리턴값 형식이 RGB 포맷이라면,
우선 1바이트(=8비트=16진수로 2자리)씩 끊어보면
0x FF - AA - 00 이렇게 구분되고, 각 값은 리턴값의 형식에 따라 R-G-B를 뜻함
red : 0xFF -> 10진수로 255
green : 0xAA -> 10진수로 170
blue : 0x00 -> 10진수로 0
이렇게 보면되요. 프로그래밍 언어에서 각 함수마다 다르니 리턴값 꼭 확인해보세요. RGB, BGR 등등..
ARGB도 있는데. A는 투명도로 알고있어요. 일반적으로 거의 안 쓰이고요.
RGB값에서 red값을 추출하려면, '0xFFAA00 >> 16' 하시면 연산결과가 0xFF일거임.
green값을 추출한다면, '(0xFFAA00 >> 8)&0xFF' => 0xAA
blue : '0xFFAA00&0xFF' => 0x00
아니면, 나누기 연산에서 몫이나 나머지 연산자를 이용해도 되고요.
2)
16진수의 개념을 잘 모르신다면.. 한 번 찾아보세요.
개념은 관심없고 그냥 단순히 바꾸고만 싶다면, 윈도우 계산기에서 프로그래머용하시면 될거에요.
3) 참고용.
GetPixelColor? GetPixel? 가 리턴형식이 RGB면
red := color >> 16
if(red > 200)
{
}
리턴 형식이 BGR이면
red := color & 0xFF
if(red > 200)
{
}
로하시면되요. 0xFF랑 255는 코드에서 똑같은 값으로 읽혀진다고 보면되요.
val := 0xFF 나 val := 255는 같은 뜻이에요.
'red := color & 0xFF' 부분이 'red := color & 255' 랑 같은 말이고요.
'if(red > 200)' 부분이 'if(red > 0xC8)' 랑 같은 뜻이에요.
>>는 쉬프트 연산자, &는 비트연산자인데. 모르시지는 않겠죠?...