2013-05-15 3 views
4

나는 이제 막 시작 했으므로 다음과 같은 "문제"를 발견했습니다.반환 된 값을 특정 유형으로 변환하십시오.

4 개의 부호없는 32 비트 정수를 반환하는 함수를 사용하고 있는데이 값을 할당 할 때이 값을 8 비트 정수로 변환하는 가장 좋은 방법이 무엇인지 궁금합니다. (또는 가능한 경우). 나는 그것들을 uint32에 할당하여 작업하게하고, 그 후에 그것들을 변환하지만 좀 더 간결한 방법이 있는지 궁금해하고있었습니다.

예 :

r, g, b, _ := image.At(x, y).RGBA() // ideally convert them at this stage 

그래서 Image.At이 UINT32를 반환하지만 내가

감사

UINT8으로 R, G, B를 싶습니다
+0

['RGBA'] (http://golang.org/pkg/image/#Uniform.RGBA) 함수는'uint32'에서 정수를 반환합니다. uint8로 수동으로 변환 할 때의 문제점은 무엇입니까? 또한,'uint32'의 문제점은 무엇입니까? –

답변

4

이동 당신이 원하는에 대한 구문이 없습니다 . 당신은 최선의 방법은 다음 라인에서 그것을하는 것입니다.

rbig, gbig, bbig := image.At(x, y).RGBA() 
r, g, b := uint8(rbig), uint8(gbig), uint8(bbig) 

그럼 그냥 도우미 함수

func convert(i, j, k, _ uint32) (uint8, uint8, uint8) { return uint8(i), uint8(j), uint8(k) } 
r, g, b := convert(image.At(x, y).RGBA()) 
여전히

두 줄의 최소한을하지만 당신은 어디에서든지 당신은 그것을하고 통화 사이트가 조금 보일 수 있습니다 필요한 기능을 다시 사용할 수 있지만 그건 정말 당신을 귀찮게하는 경우 청소부.

+1

좋습니다. 조언 해주셔서 감사합니다. 나는 아마 기능 경로를 갈 것이다. – ggordan

관련 문제